Как использовать более двух моделей в одной форме, используя modelForms? - PullRequest
0 голосов
/ 27 января 2019

Я создаю новое приложение, используя Django, мое приложение нуждается в форме для добавления данных в БД. Я использую 4 модели , которые все связаны внешними ключами. Как я могу использовать modelForm для ввода данных в форму и добавления их непосредственно в БД, если это невозможно, какой должен быть мой подход?

Я проверил существующие решения, которые предназначены только для 2 моделей, я не смог найти способ настроить его для своей собственной проблемы. Я попытался использовать inlineformset , но, как я уже сказал, не мог понять, как я могу реализовать его со всеми моими моделями вместе.

Я также пару раз просматривал документацию по Django, но ничего подобного не смог найти (возможно, мне не хватает).

Мои модели такие:

class Question(models.Model):
    year = models.CharField(max_length=5)
    source = models.CharField(max_length=140)
    problemNumber = models.CharField(max_length=16)
    weblink = models.CharField(max_length=200)
    date_posted = models.DateTimeField(default=timezone.now)
    problemStatement = models.TextField()
    author = models.ForeignKey(User, on_delete=models.PROTECT)

class QLevel(models.Model):
    qID = models.ForeignKey(Question, on_delete=models.CASCADE)
    level = models.CharField(max_length=16)

class QMethod(models.Model):    
    qID = models.ForeignKey(Question, on_delete=models.CASCADE)
    method = models.CharField(max_length=40)

class QSubject(models.Model):
    qID = models.ForeignKey(Question, on_delete=models.CASCADE)
    subject = models.CharField(max_length=35)

Как видно, 3 модели подключены к Вопрос модель с внешним ключом, в то время как Вопрос Модель подключена к Пользователь .

У меня есть простая форма, в которой я в основном ввожу всю необходимую информацию (все указанные поля) и хочу, чтобы она передавала их непосредственно в БД. Если это возможно, пожалуйста, объясните мне, если нет, объясните, почему нет, и какие другие подходы я могу попробовать?

Спасибо!

1 Ответ

0 голосов
/ 30 января 2019

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

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

...