使用django通用表单编辑多对多关系的另一侧
我有两种型号:使用django通用表单编辑多对多关系的另一侧,django,forms,django-forms,many-to-many,m2m,Django,Forms,Django Forms,Many To Many,M2m,我有两种型号: class Actor(models.Model): name = models.CharField(max_length=30, unique = True) event = models.ManyToManyField(Event, blank=True, null=True) class Event(models.Model): name = models.CharField(max_length=30, unique = True)
class Actor(models.Model):
name = models.CharField(max_length=30, unique = True)
event = models.ManyToManyField(Event, blank=True, null=True)
class Event(models.Model):
name = models.CharField(max_length=30, unique = True)
long_description = models.TextField(blank=True, null=True)
在前面的问题中,我创建了一个带有保存函数的EventForm:
class EventForm(forms.ModelForm):
class Meta:
model = Event
def save(self, commit=True):
instance = forms.ModelForm.save(self)
instance.actors_set.clear()
for actor in self.cleaned_data['actors']:
instance.actors_set.add(actors)
return instance
def generic_edit(request, modelname, object_id):
modelname = modelname.lower()
form_class = form_dict[modelname]
return update_object(request,
form_class = form_class,
object_id = object_id,
template_name = 'createdit.html'
)
这允许我从定义的m2m连接的另一端添加m2m链路
现在我想编辑条目。我一直在使用一个通用函数:
class EventForm(forms.ModelForm):
class Meta:
model = Event
def save(self, commit=True):
instance = forms.ModelForm.save(self)
instance.actors_set.clear()
for actor in self.cleaned_data['actors']:
instance.actors_set.add(actors)
return instance
def generic_edit(request, modelname, object_id):
modelname = modelname.lower()
form_class = form_dict[modelname]
return update_object(request,
form_class = form_class,
object_id = object_id,
template_name = 'createdit.html'
)
但这会提取除保存到此对象的多对多选择之外的所有信息
我想我需要做类似的事情:,但我还没弄明白
如何使用通用更新对象编辑多对多链接的另一面?我在这里找到了答案: