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 на поле.

Вернуться на верх