Как добавить поле сквозной модели в форму Django

Для моего проекта Django я пытаюсь создать единственную форму, которая позволяет мне добавить строку в мою модель Pipeline и связать эту строку с моделью Process через модель PipelineProcess. Это довольно просто сделать с помощью ModelForms, если бы модель PipelineProcess не имела дополнительного поля (фаза). Мне нужно иметь возможность просматривать и добавлять/редактировать поле PipelineProcess.phase в одной и той же форме. Обратите внимание, что PipelineProcess является "сквозной моделью" модели Pipeline и Process.

models.py

class Pipeline(models.Model):
    name = models.CharField(max_length=100)
    sector = models.CharField(max_length=100, blank=True, null=True)
    process = models.ManyToManyField(Process, through='PipelineProcess') ### NOTE THE USAGE OF THE THROUGH MODEL HERE

    class Meta:
        managed = True
        db_table = 'pipeline'


class Process(models.Model):

    name = models.CharField(max_length=100)

    class Meta:
        managed = True
        db_table = 'process'


class PipelineProcess(models.Model):
    pipeline = models.ForeignKey(Pipeline, models.DO_NOTHING, blank=True, null=False)
    process = models.ForeignKey(Process, models.DO_NOTHING, blank=True, null=False)
    phase = models.CharField(max_length=100) ### THIS FIELD I AM UNABLE TO ACCESS THROUGH A FORM

    class Meta:
        managed = True
        db_table = 'pipeline_process'

forms.py

class PipelineForm(ModelForm):
    class Meta:
        model = Pipeline
        fields = ['name', 'sector', 'phase']

Эта форма выдает следующую ошибку, которая имеет смысл:

django.core.exceptions.FieldError: Unknown field(s) (phase) specified for Pipeline

Я пробовал искать примеры других людей, но ни один из них мне не пригодился. Большинство из них были слишком сложными для меня, чтобы я мог реализовать их в своем собственном проекте. Я довольно новичок в Django и веб-разработке в целом. Любая помощь будет очень признательна.

class PipelineForm(Forms.ModelForm):

class Meta:

    model = Pipeline
    fields = '__all__'
      

поле "phase", которое вы используете в вашем forms.py, не является полем класса "Pipeline". и также вы используете "ModelForms" вместо "Forms.ModelForm"

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