0

私は解決すべき奇妙な謎を抱えています:

https://docs.djangoproject.com/en/dev/topics/auth/で説明されているように、ユーザープロファイルを使用してdjango-1.4ユーザーオブジェクトを拡張し、プロジェクト固有の役割を実装したいと考えました。したがって、私のモデルは次のようになります。

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-classを渡す必要があったので、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.

誰かアイデアがありますか?

4

1 に答える 1

3

私の推測では、forms.SelectMultipleウィジェットを使用しているためです。これにより、UserProfileインスタンスのリスト( )が提供されますが、 ForeignKeyフィールド(UserProjectRole.userProfile )に設定する必要が[<UserProfile: MyUser>]ある単一のUserProfileインスタンスではありません。したがって、forms.Selectウィジェットを代わりに使用してみることをお勧めします。

于 2012-05-19T14:23:11.500 に答える