我有一个奇怪的谜题要解决:
我使用 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.
有人有想法吗?