/ / Джанго: Заповнення багатьох відносин для кожної нової форми в формі - django, django-forms, django-views

Джанго: Заповнення багатьох відносин для кожної нової форми в формі - django, django-forms, django-views

Я використовую ці 3 моделі (спрощені):

class Model1(models.Model):
field1 = models.CharField(max_length=25)

class Model2(models.Model):
field1 = models.CharField(max_length=25)

class Model3(models.Model):
model1 = models.ForeignKey(Model1)
model2 = models.ForeingKey(Model2)

У мене є форма для Model1 і formet для Model2s, які працюють, але проблема полягає в тому, що для кожної моделі 2 в formets я хочу, щоб там також була Model3, який з'єднує Model2 з Model1.

Як додати Model3, щоб він заповнювався для кожної моделі 2 у форматі?
Я намагався знайти рішення, використовуючи inlineformsets або modelformsets, але я все ще не розумію їх. Я навіть не знаю, чи правильно це ввійти.

Я шукаю все, що вказує мені в правильному напрямку.

Відповіді:

1 для відповіді № 1

Припускаючи, що моє запитання вище знаходиться уздовж потрібних рядків, то в частині, що стосується POST, ваша думка:

if model_one_form.is_valid() and model_two_formset.is_valid():
obj_one = model_one_form.save()
for model_two_form in model_two_formset:
obj_two = model_two_form.save()
obj_three = Model3.objects.create(model1=obj_one, model2=obj_two)

Здається, що щось таке просте можна було б зробити краще за допомогою простого ManyToManyField, або якщо вам потрібен доступ до Model3, то те ж саме, але використовуючи through аргумент Подивитися https://docs.djangoproject.com/en/1.10/ref/models/fields/#django.db.models.ManyToManyField.through Звичайно, ваша справа може бути складнішою, ніж ви вказали у вашому питанні.