【发布时间】:2020-07-11 20:11:55
【问题描述】:
我有一个“Parent”模型,其中包含多个“Child”模型,并且 Parent 和 Child 之间的关系持有孩子的顺序。因此,我需要一个自定义的中介模型。
models.py:
class Parent(models.Model):
name = models.CharField
children = models.ManyToManyField(Child, through=ParentChild)
...
class Child(models.Model):
name = models.CharField()
...
class ParentChild(model.Model):
parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
child = models.ForeignKey(Child, on_delete=models.CASCADE)
order_of_child = IntegerField(null=True, blank=True, unique=True, default=None)
父对象是基于表单创建的,并且要成为父对象一部分的子对象由复选框选择。 现在我的问题是:如何将 order_of_child 包含在表单中并与复选框一起呈现,以及如何将关系正确保存在视图中?
forms.py:
class ParentForm(ModelForm):
class Meta:
model = Parent
fields = ['name', 'children']
def __init__(self, *args, **kwargs):
super(ParentForm, self).__init__(*args, **kwargs)
self.fields['name'] = forms.CharField(label='Name', widget=forms.TextInput()
self.fields['children'] = ModelMultipleChoiceField(
widget=forms.CheckboxSelectMultiple(queryset=Child.objects.all())
【问题讨论】:
标签: django forms save many-to-many m2m