私のモデルを考えてみましょう:
class CampUserInvitation(models.Model):
user = models.ForeignKey('auth.User')
camp = models.ForeignKey('events.Camp')
user_accepted = models.BooleanField(default=False)
上記のモデルは、Camp と User の間の m2m 関係の中間モデルです。
class Camp(Event):
invited = models.ManyToManyField('auth.User',
through='events.CampUserInvitation')
def get_users_signed(self):
return (self.invited
.filter(user_accepted__exact=True)
.filter(user_accepted_timestamp__lte=self.invitation_deadline)
)
user_accepted フィールドが True に設定されているユーザーのみですべてのユーザーのクエリセットをフィルター処理する場合 (上記の get_users_signed メソッドで)
self.invited.filter(user_accepted__exact=True)
私は得る:
Cannot resolve keyword 'user_accepted' into field. Choices are: <bunch of attributes of the User class>
なぜdjangoは「受け入れられた」がユーザーのパラメータであると考えるのですか? そのために二重のアンダースコアを使用することになっていませんでしたか?