2015-08-23 4 views
0

У меня проблема. Вот 2 связанные модели:Django несколько включенных форм с внешним ключом

class Auto(models.Model): 
    ... 
class Part(models.Model): 
    ... 
    parent = models.ForeignKey(Auto, blank = False, null = False) 

Итак, я хочу, чтобы создать следующую форму Джанго:

Auto1.field1 Auto1.Part1.field1 Auto1.field2 
       Auto1.Part1.field2 
       Auto1.Part2.field1 
       Auto1.Part2.field2 
       ... 

Auto2.field1 Auto2.Part1.field1 Auto2.field2 
       Auto2.Part1.field2 
       Auto2.Part2.field1 
       Auto2.Part2.field2 
       ... 
... 

Все поля должны быть обновляемыми, а для модели авто и для модели части. Как я могу это сделать?

+0

Вы ищете способ создания объектов «Part» и «Auto» в одно и то же время в той же форме? Если это так, вам нужно будет передать код своим формам в HTML, и вашему представлению нужно будет собрать объекты и создать их в правильном порядке. – henrikstroem

+0

Не совсем. Я хочу обновить оба этих объекта в одной и той же форме, а не создавать – maxx

ответ

0

Вам следует попытаться использовать Inline formsets. Например, если у вас есть автодокумента ModelForm это можно сделать так:

autoforms = [] 
part_formsets = [] 
autos = Auto.objects.all() 
PartFormSet = inlineformset_factory(Auto, Part, fields=('field1', 'field2')) 
for auto in autos: 
    autoform = AutoForm(instance=auto) 
    autoforms.append(autoform) 
    part_formset = PartFormSet(instance=auto) 
    part_formsets.append(part_formset) 
c = {'autoforms': autoforms, 'part_formsets': part_formsets} 
return render(request, 'some.html', c) 

Теперь вы можете перебирать autoforms и part_formsets в шаблоне, чтобы получить желаемые формы. Тем не менее, я не проверял, легко ли отображать их в шаблоне по своему усмотрению.

+0

У вас есть пример именно моего дела? – maxx

+0

Я пытался показать, как это можно сделать - взгляните на обновленный ответ. – chem1st

Смежные вопросы