Как я могу заполнить связанные модели отдельно через формы (OneToOneField)?

У меня есть две табличные модели. Я записываю данные в одну из них, используя форму.

Я также хочу записать данные в другую таблицу модели, используя форму.

Но я пытаюсь связать эти таблицы.

Используйте первый вариант в качестве базового.

И заполняем их две таблицы в два этапа. На первом этапе я пишу первую модель.

На втором этапе создается вторая модель.

Для меня важно иметь возможность выбрать поле из первой модели, чтобы отобразить его при заполнении второй формы.

Но я не могу этого сделать. Я хочу, чтобы при заполнении обе таблицы имели одинаковый размер по строкам.

В будущем я планирую добавить новые модели и формы - а также вторую форму, используя поле из первой модели.

Что я могу сделать? Я использую OneToOneField в качестве ссылки.

Что я могу сделать, чтобы связать модели, но записать в них данные не в одной форме, в одном шаблоне. А в разных, в двух формах и в двух шаблонах.

При заполнении формы, как показано на скриншоте, я хотел бы отображать выпадающий список в соответствии с разными условиями, но я получаю какой-то непонятный объект, а не содержимое поля в модели.

enter image description here

Как я могу заполнить связанные модели отдельно через формы (OneToOneField)?

Объект “ArkiObject" (1)” текст в раскрывающемся списке - это строка по умолчанию в Django для модели, в которой отсутствует метод __str__. Добавьте по одному к каждой модели, которую вы хотите показать в <select>:

class ArkiObject(models.Model):
    ...
    def __str__(self):
        return self.nameobject

Это само по себе заставляет список отображать значение nameobject вместо строки объекта.

<время работы/>

Двухэтапный рабочий процесс

  1. Создайте “базовую” строку (ArkiObject) на странице #1.
  2. Перенаправьте на страницу №2 и сохраните форму №2 следующим образом:
obj = form.save(commit=False)
obj.nameobject = base
obj.save()

Точно такой же шаблон работает для страниц №3, №4, ..., если позже вы добавите больше связанных моделей.

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