1

私は部族の活動を見下ろす部族長だとしましょう。私は3つのモデルを持っています:

class Hunter:
   tribes = models.ManyToManyField(Tribe)
   info

class Missions:
    user = models.ForeignKey(User)
    info

class Tribe:
    tribe_chief = models.ForeignKey(User) #directed towards Chief
    info

そしてチーフとして私はviews.pyを持っています(URLを介して渡されたtribepk)

user = request.user
tribe_instance = Tribe.objects.get(pk=tribepk)
myhunters = tribe_instance.hunter_set.all()
allmissions = Mission.objects.filter(user__in=myhunters)

したがって、allmissions を除くすべてが読み込まれます。_set.all() の結果をフィルター基準として使用することは可能ですか? ありがとう

それが役立つ場合、これは myhunters で返されるものです ->

'myhunters': [<Hunter: test>, <Hunter: asdf>, <Hunter: more>]
4

1 に答える 1

4

したがって、Mission にはForiegnKeytoUserと not がありHunterます。したがってHunter、ユーザーのリストを期待しているときにインスタンスを渡しています。

ForiegnKeyモデルに toがあるようにモデルを変更できUserますHunter

class Hunter:
   tribes = models.ManyToManyField(Tribe)
   user = models.ForiegnKey(User)

allmissions = Mission.objects.filter(user__id__in=[myhunter.user.id for myhunter in myhunters])

Missionまたは、ForiegnKeyto を持つこともできますHunter

class Missions:
    user = models.ForeignKey(Hunter)
    info

allmissions = Mission.objects.filter(user__in=myhunters)

編集: Aamir Adnan がコメントで指摘しているように、最初のオプションのルックアップを更新して安価にします。

于 2013-10-18T07:36:55.547 に答える