【发布时间】:2014-08-01 21:15:23
【问题描述】:
所以我有 2 个模型:团队和成员。我有一个名为 MemberTeam 的数据透视表。
这是我的 MemberTeam 模型:
member = models.ForeignKey(Member)
team = models.ForeignKey('acpkinballmanageteams.Team',verbose_name=_("team"))
role = models.CharField(max_length=15,choices=ROLE_CHOICES,verbose_name=_("role"),blank=False,default='player')
因此,当管理员创建团队时,我希望他们直接添加玩家。所以我创建了一个内联表单集。这是我的 MemberTeamForm:
class MemberTeamForm(forms.ModelForm):
member = AutoCompleteSelectField(lookup_class=MemberLookup2,required=True)
class Meta:
model = MemberTeam
没什么好看的。以下是我创建表单集的方式:
TeamRosterFormset = inlineformset_factory(Team, MemberTeam, fields=('member','role'), \
form=MemberTeamForm,can_delete=True, extra=1, max_num=18)
如果我创建一个团队并且不添加任何成员,一切都会正常工作。如果我从团队编辑页面添加/编辑/删除成员,它也可以正常工作。问题是当我尝试添加一个包含成员的团队时,我收到此错误: 在使用这种多对多关系之前,"" 需要为字段 "team" 提供一个值。
这是正在使用的视图(它是基于创建表单的视图):
def form_valid(self, form):
context = self.get_context_data()
self.object = form.save(commit=False)
teamroster_formset = cp_forms.TeamRosterFormset(self.request.POST, instance=self.object)
if teamroster_formset.is_valid():
teamroster_formset.instance = self.object
teamroster_formset.save()
我不知道发生了什么,我应该做什么......请问有什么想法吗?
谢谢, 阿拉
【问题讨论】:
标签: django forms many-to-many inline-formset