【发布时间】:2015-07-04 12:37:34
【问题描述】:
我正在使用 Django 1.8 和 django-allauth。我有一个带有下拉菜单的简单表单,允许我的用户选择角色模型。 我有一个看起来像这样的 UserCharacter 模型:
class UserCharacter(models.Model):
user = models.ForeignKey(User)
character = models.ForeignKey(Character)
is_default = models.BooleanField(default=False)
在我的主窗体中,我只显示“字符”字段,它显示为字符对象的下拉菜单。到目前为止,一切都很好 - 用户可以选择一个 Character,并将其保存为 UserCharacter 关联。
我要做的是显示所有尚未将 UserCharacter 链接到当前登录用户的 Character 对象。我通常会使用 limit_choices_to 功能,如下所示:
character = models.ForeignKey(Character, limit_choices_to={'id__in': UserCharacter.objects.filter(user_id=[USER_ID]))
我的问题是,我不知道如何从 UserCharacter 模型或 ModelForm 访问当前用户对象。我通常需要访问当前请求以获取 django-allauth 登录的用户对象。通常代替 [USER_ID] 是我会放
self.request.user.id
从 django-allauth 获取当前用户的 id,但我不能从这里的模型中做到这一点。我将如何根据当前用户对象更改 ModelForm 中的表单选择? 非常感谢!
【问题讨论】:
标签: django django-models django-forms django-allauth