所以我有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')
因此,当管理员创建团队时,我希望他们直接添加玩家。所以我创建了一个inlineformset。这是我的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)
如果我创建一个团队并且不添加任何成员,那么一切正常。如果我从团队编辑页面添加/编辑/删除成员,它也可以正常工作。问题是当我尝试添加一个包含成员的团队时,我收到此错误: ""需要有一个领域的价值"团队"在此之前可以使用多对多关系。
以下是正在使用的视图(它是基于创建表单的视图):
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()
我不知道发生了什么,我该怎么做......有什么想法吗?
谢谢, ARA
答案 0 :(得分:0)
愚蠢的我......只需要从.save()方法中删除commit = false -.-