我有一个奇怪的谜语要解决:
我使用UserProfile扩展了我的django-1.4用户对象,如https://docs.djangoproject.com/en/dev/topics/auth/所述,并希望实现项目特定的角色。所以我的模型如下所示:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
projects = models.ManyToManyField(Project, through='UserProjectRole')
[...]
class UserProjectRole(models.Model):
userProfile = models.ForeignKey(UserProfile)
project = models.ForeignKey(Project)
group = models.ForeignKey(Group)
[...]
我需要传递一个css类,所以我为UserProjectRole创建了一个模型表单,并用一个小部件实现了userProfile-Field:
class ProjectRoleForm(forms.ModelForm):
userProfile = forms.ModelMultipleChoiceField(label='Users',
queryset=UserProfile.objects.all(),
widget=forms.SelectMultiple(attrs={'class': 'select-multiple'}))
class Meta:
model = UserProjectRole
表单显示正确,但是在保存过程中崩溃时出现以下错误
Cannot assign "[<UserProfile: MyUser>]": "UserProjectRole.userProfile" must be a "UserProfile" instance.
有没有人有想法?
答案 0 :(得分:3)
我的猜测是因为您使用的是 forms.SelectMultiple 小部件。其中列出了UserProfile实例([<UserProfile: MyUser>]
),而不是单个 UserProfile 实例,当然需要在 ForeignKey 字段上设置 UserProjectRole.userProfile )。因此,我建议尝试使用forms.Select小部件。