В моем models.py, у меня есть 3 классаКак создать 2 встроенных формы в одной форме Django?
class Member(models.Model):
name = models.CharField(max_length=255)
occupation = models.CharField(max_length=255)
class FamilyMember(models.Model):
name = models.CharField(max_length=255)
relationship = models.CharField(max_length=255)
member = models.ForeignKey(Member)
class OtherClub(models.Model):
name = models.CharField(max_length=255)
member = models.ForeignKey(Member)
В моем forms.py, я использую встроенный formset завод, чтобы сделать это:
class MemberForm(forms.ModelForm):
class Meta:
model = Member
fields = [
'name', 'occupation',
]
FamilyMemberFormSet = inlineformset_factory(Member, FamilyMember, fields=('name', 'relationship'))
OtherClubFormSet = inlineformset_factory(Member, OtherClub, fields=('name',))
Однако часть где я потерялся - это взгляды. Как я могу привести встроенные формы в свою переменную формы в представлении? В настоящее время, на мой взгляд выглядит следующим образом:
def member_edit(request, pk):
member = Member.objects.get(pk=pk)
if not request.user == member.user:
return HttpResponse("You do not have the permission to do that.")
if request.method == 'POST':
member_form = MemberForm(request.POST, instance=member)
if member_form.is_valid():
member = member_form.save()
return redirect('myapp:index')
else:
member_form = MemberForm(instance=member)
return render(request, 'myapp/member_edit.html', {
'member' : member,
'member_form' : member_form,
})
Простое управление формой в основном, но я не знаю, как привести инлайн формы в смеси, и документация не помогает вообще, так как я имею дело с 2 встроенных формы.
Любая помощь приветствуется.
Попробуйте получить представление, работающее с одним fomset, затем добавьте другое. Документы можно найти в [с помощью встроенного набора форм в представлении] (https://docs.djangoproject.com/en/1.9/topics/forms/modelforms/#using-an-inline-formset-in-a-view) и [использование нескольких форм в представлении] (https://docs.djangoproject.com/en/1.9/topics/forms/formsets/#using-more-than-one-formset-in-a-view) полезно. – Alasdair