Python 如何在表单上创建m2m字段的部分并将模型选项保存在django中?
我有以下型号:Python 如何在表单上创建m2m字段的部分并将模型选项保存在django中?,python,django,many-to-many,Python,Django,Many To Many,我有以下型号: PROOF_TYPE_CHOICES =(('A','Address proof'), ('P','PAN card'), ) class DocProof(models.Model): name = models.CharField(max_length=100,unique=True) type = models.CharField(max_length=1,default=
PROOF_TYPE_CHOICES =(('A','Address proof'),
('P','PAN card'),
)
class DocProof(models.Model):
name = models.CharField(max_length=100,unique=True)
type = models.CharField(max_length=1,default='A',
choices=PROOF_TYPE_CHOICES
)
class Vendor(models.Model):
name = models.CharField(max_length=100)
doc_proofs = models.ManyToManyField(DocProof)
我希望在供应商表格的不同部分显示不同类型的文件证明类型。例如:
class VendorForm(forms.ModelForm):
model = Vendor
# doc_proofs = forms.ModelMultipleChoiceField(
# queryset=DocProof.objects.all().order_by('-type'),
# required=True,
# widget=forms.CheckboxSelectMultiple())
address_proofs = forms.ModelMultipleChoiceField(
queryset=DocProof.objects.filter(type='A').order_by('-type'),
required=True,
widget=forms.CheckboxSelectMultiple())
pan_card = forms.ModelMultipleChoiceField(
queryset=DocProof.objects.filter(type='P').order_by('-type'),
required=True,
widget=forms.CheckboxSelectMultiple())
这肯定会显示供应商表单中的不同部分,但也不允许我保存表单,因为表单字段集不包含原始的“doc_校对”。此外,我如何在供应商模型中保存这些选择,因为这些fieldsaddress\u证明、pan\u卡不在其上,而仅在表单上。我如何准确地映射它们/覆盖模型上的save方法以将其保存为“doc_proof”?使用django 1.6.5找到了解决方案,通过在供应商模型定义中添加字段,创建与具有不同相关名称的同一供应商模型的重复关系,如下所示:
address_proofs = models.ManyToManyField(DocProof,
related_name='address_proofs')
pan_card = models.ManyToManyField(DocProof,
related_name='pan_card')
但重复关系对上述同一模型有何影响