Использование аргумента Django "through" для сохранения дополнительной информации в поле ManyToMany

Я пытаюсь создать сценарий, в котором я могу добавить "порядок" уровня (чтобы добавить степень эскалации) для сохраненных экземпляров модели "ContactPerson" в соответствии с некоторыми критериями (скажем старшинство или позиция ответственности). Форма должна выглядеть примерно так:

Contact Person Level
Franc Correa 2
Liz Burnett 3
Christian Amarilo 3
Mark Tannit

Значения Level будут введены во время выполнения в (уже) созданные контактные лица. (Пустое поле последней записи в приведенной выше таблице означает, что уровень еще не назначен.)

Я создал следующие модели:

class ContactPerson(models.Model):
    name = models.CharField(max_length=128)
    designation = models.CharField(max_length=128)

class Level(models.Model):
    level = models.PositiveSmallIntegerField()
    desig_person = models.ManyToManyField(ContactPerson, through='Order')

class Order(models.Model):
    contact_person = models.ForeignKey(ContactPerson, on_delete=models.CASCADE)
    level_order = models.ForeignKey(Level, on_delete=models.CASCADE)
    location = ...

Сейчас я создаю/добавляю персоны (в модели ContactPerson) и позже хочу назначить "уровень/степень эскалации" в модели "Order" в поле level_order во время выполнения. С этой целью я использую следующую форму модели и присваиваю в поле inlineformset_factory:

class AssignEscalationLevelForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(AssignEscalationLevelForm, self).__init__(*args, **kwargs)
        self.auto_id = True

    class Meta:
        model = Order
        fields = ('contact_person', 'level_order', 'location')

Как уже говорилось выше, я хочу, чтобы поле level_order размещалось рядом с всеми сохраненными значениями поля contact_person в одной строке. Однако я получаю все значения contact_person в виде выпадающего списка и выпадающее поле blank (для ввода числового порядка) для level_order рядом с ним в той же строке. Я хочу отобразить все значения Contact Person в последовательных строках и поле для level_order (как показано в таблице вверху).

Может ли кто-нибудь подсказать мне, где я ошибаюсь. Это первый раз, когда я использую аргумент Django through и я не очень уверен, что все правильно понял.

Спасибо

Примечание: Модель уровня заголовка здесь не показана.

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