Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在表单上创建m2m字段的部分并将模型选项保存在django中?_Python_Django_Many To Many - Fatal编程技术网

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')
但重复关系对上述同一模型有何影响