Как разделить огромную модель, сгруппировать ее по поддоменам и сохранить единую модельФорма

Я начинаю делать проект на 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 с этой основной моделью и подмоделью

Если вы можете мне помочь :)

Спасибо

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