Как разделить огромную модель, сгруппировать ее по поддоменам и сохранить единую модельФорма
Я начинаю делать проект на Django и у меня есть очень большая модель, которую я хотел бы разделить на подмодели, мне кажется, что это возможно, согласно документу с помощью models.ForeignKey, но я не знаю, как собрать их в одну форму
Это моя реальная модель и ModelForm
class Device(models.Model):
phone_regex = RegexValidator(regex=r'^[0-9]{10}$', message="Error: Format 0611223344")
device_regex = RegexValidator(regex='^[a-zA-Z1-9]{3}$', message='Format de l\'identifiant invalide.')
name = models.CharField(max_length=16)
place = models.CharField(max_length=16)
start_at = models.DateTimeField(default=datetime.datetime.now)
end_at = models.DateTimeField(default=datetime.datetime.now)
ChiefGo_function = models.CharField(max_length=16)
ChiefGo_indicative = models.CharField(max_length=16)
ChiefGo_phone = models.CharField(validators=[phone_regex], max_length=10)
DChiefGo_function = models.CharField(max_length=10, blank=True)
DChiefGo_indicative = models.CharField(max_length=10, blank=True)
DChiefGo_phone = models.CharField(validators=[phone_regex], max_length=10)
DSO_function = models.CharField(max_length=10, blank=True)
DSO_indicative = models.CharField(max_length=10, blank=True)
DSO_phone = models.CharField(validators=[phone_regex], max_length=10)
device_id = models.CharField(max_length=3, validators=[device_regex], default=random_id)
status = models.BooleanField(default=True)
class DeviceForm(ModelForm):
class Meta:
ordering = ('end_at',)
model = Device
fields = ['name', 'place', 'start_at', 'end_at', 'ChiefGo_function',
'ChiefGo_indicative', 'ChiefGo_phone', 'DChiefGo_function',
'DChiefGo_indicative', 'DChiefGo_phone', 'DSO_function',
'DSO_indicative', 'DSO_phone', 'device_id', 'status']
widgets = {
'name': django.forms.TextInput(attrs={'placeholder': 'sairir le nom de l\'évenement'}),
'place': django.forms.TextInput(attrs={'placeholder': 'commune'}),
'start_at': django.forms.TextInput(attrs={'placeholder': 'date du début'}),
'end_at': django.forms.TextInput(attrs={'placeholder': 'date de fin'}),
'ChiefGo_function': django.forms.TextInput(attrs={'placeholder': 'fonction'}),
'ChiefGo_indicative': django.forms.TextInput(attrs={'placeholder': 'indivatif'}),
'ChiefGo_phone': django.forms.TextInput(attrs={'placeholder': '06 12 34 56 78'}),
'DChiefGo_function': django.forms.TextInput(attrs={'placeholder': 'fonction'}),
'DChiefGo_indicative': django.forms.TextInput(attrs={'placeholder': 'indivatif'}),
'DChiefGo_phone': django.forms.TextInput(attrs={'placeholder': '06 12 34 56 78'}),
'DSO_function': django.forms.TextInput(attrs={'placeholder': 'fonction'}),
'DSO_indicative': django.forms.TextInput(attrs={'placeholder': 'indivatif'}),
'DSO_phone': django.forms.TextInput(attrs={'placeholder': '06 12 34 56 78'}),
'device_id': django.forms.TextInput(),
'status': django.forms.CheckboxInput(attrs={'onclick': 'window.alert("OK");', 'checked': ''})
}
Я хотел бы разделить его таким образом: Главная модель
class Device(models.Model):
chief_go = models.ForeignKey(ChiefGO, on_delete=models.CASCADE)
dchief_go = models.ForeignKey(DChiefGO, on_delete=models.CASCADE)
dso = models.ForeignKey(DSO, on_delete=models.CASCADE)
general_info = models.ForeignKey(GeneralInfo, on_delete=models.CASCADE)
подраздел модели :
class ChiefGO(models.Model):
phone_regex = RegexValidator(regex=r'^[0-9]{10}$', message="Error: Format 0611223344")
ChiefGo_function = models.CharField(max_length=16)
ChiefGo_indicative = models.CharField(max_length=16)
ChiefGo_phone = models.CharField(validators=[phone_regex], max_length=10)
class DChiefGO(models.Model):
phone_regex = RegexValidator(regex=r'^[0-9]{10}$', message="Error: Format 0611223344")
DChiefGo_function = models.CharField(max_length=10, blank=True)
DChiefGo_indicative = models.CharField(max_length=10, blank=True)²
DChiefGo_phone = models.CharField(validators=[phone_regex], max_length=10)
class DSO(models.Model):
phone_regex = RegexValidator(regex=r'^[0-9]{10}$', message="Error: Format 0611223344")
DSO_function = models.CharField(max_length=10, blank=True)
DSO_indicative = models.CharField(max_length=10, blank=True)
DSO_phone = models.CharField(validators=[phone_regex], max_length=10)
class GeneralInfo(models.Model):
device_regex = RegexValidator(regex='^[a-zA-Z1-9]{3}$', message='Format de l\'identifiant invalide.')
device_id = models.CharField(max_length=3, validators=[device_regex], default=random_id)
name = models.CharField(max_length=16)
place = models.CharField(max_length=16)
start_at = models.DateTimeField(default=datetime.datetime.now)
end_at = models.DateTimeField(default=datetime.datetime.now)
status = models.BooleanField(default=True)
Но теперь я не знаю, как сделать ModelForm с этой основной моделью и подмоделью
Если вы можете мне помочь :)
Спасибо