Django-内联表单集和多对多关系
所以我有两个模型:团队和成员。我有一个名为MemberTeam的数据透视表 以下是我的MemberTeam模型:Django-内联表单集和多对多关系,django,forms,many-to-many,inline-formset,Django,Forms,Many To Many,Inline Formset,所以我有两个模型:团队和成员。我有一个名为MemberTeam的数据透视表 以下是我的MemberTeam模型: member = models.ForeignKey(Member) team = models.ForeignKey('acpkinballmanageteams.Team',verbose_name=_("team")) role = models.CharField(max_length=15,choices=ROLE_CHOICES,verbose_n
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')
所以当管理员创建一个团队时,我希望他们直接添加玩家。所以我创建了一个inlineformset。这是我的会员表格:
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”设置一个值才能使用此多对多关系
以下是正在使用的视图(它是基于创建表单的视图):
我不知道发生了什么,我应该怎么做。。。有什么想法吗
谢谢,
阿拉好吧,让我哑口无言。。。只需从.save()方法中删除commit=false--
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()