考虑我的模型:
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 认为 'accepted' 是用户的参数?我不应该为此使用双下划线吗?