0

我正在尝试从 m2m 关系返回过滤值以在模板中使用。应该是微不足道的,但我无法让它工作。

我尝试在此处描述的模型中执行此操作,但没有使其正常工作。现在我在视图中尝试一种可能更简单的方法,在此处描述,但也无法使其正常工作。

class Activity(models.Model):
    activity_nm = models.CharField(max_length=60)  
    enddt = models.DateField()
    groups =  models.ManyToManyField(Group)
    def __unicode__(self):
        return self.activity_nm     

class Group (models.Model):
    group_nm = models.CharField(max_length=64)
    def __unicode__(self):
        return self.group_nm        



def group_details_page(request, group_nm):
    g=Activity.objects.filter(groups__in=[Group.objects.filter(group_nm=group_nm)],enddt__gt=now)
    return render_to_response('group_details_page.html', {'group': g},context_instance=RequestContext(request))   

我的目标是返回一个组的所有活动,其中活动的结束日期 > 现在可以在模板中使用。

谢谢。

编辑:收到的错误是:int() 参数必须是字符串或数字,而不是 'QuerySet'

EDIT2:看起来这个问题比我想象的要多。我现在无法返回任何值。

g=Group.objects.all()

不向模板返回值。模板解析 base.html 调用,但试图只是{{ group.group_nm }}出现是行不通的。

EDIT3:得到它返回组名(抱歉混淆)。

4

2 回答 2

1

我认为您想要做的是从以下指定的组中过滤activity_set(请参阅后向关系group_nm

def group_details_page(request, group_nm):
    group_instance = Group.objects.get(group_nm=group_nm)
    activities = group_instance.activity_set.objects.filter(enddt__gt=now)
    return render_to_response(...etc...)
于 2013-02-08T22:52:33.347 回答
0

测试了它,解决方案非常简单。

g=Activity.objects.filter(groups__in=[Group.objects.filter(group_nm=group_nm)],enddt__gt=now)一个可迭代对象放入[QuerySet]django 不知道如何索引的列表 () 中。

解决方案是转储列表理解:

g=Activity.objects.filter(groups__in=Group.objects.filter(group_nm=group_nm),enddt__gt=now)

然后它就像一个魅力。

于 2013-02-11T13:08:58.870 回答