0

テンプレートで使用するために、m2m 関係からフィルター処理された値を返そうとしています。些細なことですが、私はそれを機能させることができません。

hereで説明されているように、モデルでそれを実行しようとしましたが、機能しませんでした。ここで説明されているように、ビューで潜在的に簡単な方法を試していますが、それを機能させることもできません。

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))   

私の目標は、アクティビティの終了日 > 現在テンプレートで使用できる 1 つのグループのすべてのアクティビティを返すことです。

ありがとう。

編集: 受け取ったエラーは次のとおりです: 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

それをテストし、解決策は本当に簡単です。

django がインデックスを作成する方法がわからないg=Activity.objects.filter(groups__in=[Group.objects.filter(group_nm=group_nm)],enddt__gt=now)リスト ( ) に iterable を配置すると、[QuerySet]

解決策は、リスト内包表記をダンプすることです。

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

そして、それは魅力のように機能します。

于 2013-02-11T13:08:58.870 に答える