Python 在django admin中保存相关模型的最佳方法是什么?
我有一个名为Company的模型: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
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,)