Я використовую ці 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 Звичайно, ваша справа може бути складнішою, ніж ви вказали у вашому питанні.