Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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 在django admin中保存相关模型的最佳方法是什么?_Python_Django_Django Admin - Fatal编程技术网

Python 在django admin中保存相关模型的最佳方法是什么?

Python 在django admin中保存相关模型的最佳方法是什么?,python,django,django-admin,Python,Django,Django Admin,我有一个名为Company的模型: class Company(TimeStampedModel): company_id = models.CharField(max_length=20, unique=True) legal_name = models.CharField(max_length=200) trading_name = models.CharField(max_length=200, unique=True) # address

我有一个名为Company的模型:

class Company(TimeStampedModel):
     company_id = models.CharField(max_length=20, unique=True)
     legal_name = models.CharField(max_length=200)
     trading_name = models.CharField(max_length=200, unique=True)

     # address
     address = models.CharField(max_length=200, null=True, blank=True)
     city = models.CharField(max_length=200, null=True, blank=True)
     state = models.CharField(max_length=200, null=True, blank=True)
     zipcode = models.CharField(max_length=200, null=True, blank=True)

     # contact details
     email = models.EmailField(max_length=200, null=True, blank=True)
     phone = models.CharField(max_length=200, null=True, blank=True)
另一种模式是公司贡献:

class CompanyAttributes(TimeStampedModel):
""" All attributes of company"""

    corporate = models.ForeignKey(Company)
    key = models.CharField(max_length=100)
    value = models.TextField(max_length=100)
对于一个特定的公司,我可以有很多属性,比如账单地址、CIN、GSTIN、帐号 通过将所有字段定义为表单字段,我在一个表单中显示了所有字段。现在,我想一次性保存所有字段。一种方法是覆盖ModelAdmin的save_模型并逐个保存每个属性。 有没有一种方法可以使用save_related或其他方法,这样我就可以一次性保存所有内容

我的模型

class CompanyModelForm(ModelForm):
    pan_number = CharField()
    cin_number = CharField()
    gstin_number = CharField()
    account_number = CharField()

    def __init__(self, *args, **kwargs):
        super(CorporateModelForm, self).__init__(*args, **kwargs)
        self.fields['zipcode'].required = True
        self.fields['email'].required = True
        self.fields['phone'].required = True
        self.fields['cin_number'].required = True
        self.fields['gstin_number'].required = True

        obj = kwargs.get('instance')
        if obj:
           self.fields['email'].widget.attrs['disabled'] = 'disabled' 

class CompanyAdmin(admin.ModelAdmin):
    form = CompanyModelForm
    search_fields = ['company_id', 'legal_name', 'trading_name', 'address','city', 'state', 'zipcode', 'email', 'phone']
    list_display = ['id', 'legal_name', 'trading_name', 'address', 'city', 'state', 'zipcode', 'email', 'phone']
    readonly_fields = []
看看

这会帮你的

class CompanyAttributesInline(admin.StackedInline):
    model = CompanyAttributes

class CompanyAdmin(admin.ModelAdmin):
    ...
    inlines = (CompanyAttributesInline,)