Django Forms с различными атрибутами, связанными с одной и той же Django Model?
Я довольно новичок в Django, поэтому простите меня, если мой код не слишком совершенен, а вопросы кажутся непонятными.
Я пытаюсь сделать веб-приложение, в котором пользователи могут подавать заявки на получение лицензий. Моя проблема заключается в том, что существуют различные виды форм заявок.
Я создал модель для лицензий и включил в нее глобальные атрибуты, такие как ID лицензии, лицензиат, дата подачи и дата истечения срока действия. Мне интересно, как я могу хранить различные данные, уникальные для каждой формы (например, некоторые формы имеют поля для загрузки файлов, а другие - нет), в одном объекте License. Возможно ли это, или мне следует создать отдельные модели для каждой формы?
Вот некоторые из моих кодов:
#модели
class License(models.Model):
licensee = models.ForeignKey(User, on_delete=models.CASCADE)
sub_date = models.DateTimeField(default=timezone.now())
exp_date = models.DateTimeField(blank=True, null=True)
def save(self, *args, **kwargs):
if not self.pk:
self.exp_date = self.sub_date + datetime.timedelta(days=30)
super(License, self).save()
def __str__(self):
return self.pk
#forms
class OP100Form(ModelForm):
financial_statements = forms.FileField()
annual_report = forms.FileField()
shareholding_docs = forms.FileField()
stock_exchange_docs = forms.FileField()
other_docs = forms.FileField()
tel_experience = forms.CharField()
tech_facilities_desc = forms.CharField()
tech_personnel_desc = forms.CharField()
system_maintenance_desc = forms.CharField()
telcoms_desc = forms.FileField()
serv_desc = forms.CharField()
fac_desc = forms.CharField()
net_gate_det = forms.CharField()
class Meta:
model = License
exclude = ['licensee', 'sub_date', 'exp_date',]
Нет, вам не нужно создавать другую модель. Что нужно сделать, так это следующее.
Любое поле, которое не является обязательным в модели License
, установите null=True, blank=True
на поле.
Любое поле, которое не является обязательным на форме, установите required=False
на поле.