2016-03-29 2 views
2

В моем 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 встроенных формы.

Любая помощь приветствуется.

+0

Попробуйте получить представление, работающее с одним 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

ответ