Ich habe ein Modell mit dem Namen Firma:Was ist die beste Möglichkeit, verwandte Modell in Django Admin zu speichern?
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)
Und anderes Modell ist CompanyAttributes:
class CompanyAttributes(TimeStampedModel):
""" All attributes of company"""
corporate = models.ForeignKey(Company)
key = models.CharField(max_length=100)
value = models.TextField(max_length=100)
Für eine bestimmte Firma, die ich viele Attribute wie Rechnungsadresse, CIN, GSTIN, Kontonummer ich haben kann alle Felder in einem einzigen Formular angezeigt, indem alle Felder als Formularfelder definiert wurden, jetzt möchte ich alle in einem Schritt speichern. Eine Möglichkeit besteht darin, das save_model von ModelAdmin zu überschreiben und jedes Attribut einzeln zu speichern. Gibt es einen Weg mit save_related oder eine andere Methode, so dass ich alles auf einmal speichern kann.
Mein Modell
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 = []