2016-03-29 7 views
3

mein models.py sieht wie folgt aus:Dieser seltsame Fehler beim Erstellen eines Inline-Formsets mit Django-Formularen. Was mache ich falsch?

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) 
    relation = models.CharField(max_length=255) 
    member = models.ForeignKey(Member) 

Nun, ich versuche, eine Inline-Form für Familienmitglieder zu schaffen innerhalb der Mitglieder bilden. Um dies zu tun, ich bin mit inlineformset_factory:

von django import Formen von myapp.models importieren * von django.forms.models inlineformset_factory importieren

class MemberForm(forms.ModelForm): 
    class Meta: 
     model = Member 
     fields = [ 
      'name', 'occupation', 
     ] 

FamilyMemberFormSet = inlineformset_factory(Member, FamilyMember) 

Wenn ich den Server laufen lasse, erhalte ich eine seltsame Fehler:

"Calling modelformset_factory without defining 'fields' or " 
django.core.exceptions.ImproperlyConfigured: Calling >modelformset_factory without defining 'fields' or 'exclude' explicitly is prohibited. 

Was mache ich falsch? Vielen Dank.

Antwort

11

Ich bin nicht sicher, aber ich denke, Sie das Formular inlineformset_factory passieren vergessen:

FamilyMemberFormSet = inlineformset_factory(Member, FamilyMember, form=MemberForm) 

Oder Sie sollten angeben, welche Felder sollten entweder fields Parameter oder exclude mit eingeschlossen/ausgeschlossen werden.

Siehe einige Beispiele in Django doc about inlineformset_factory.

+0

Okay, habe ich den Parameter. Aber jetzt bekomme ich diesen Fehler: raise FieldError (Nachricht) django.core.exceptions.FieldError: Unbekannte Felder (Name, Beruf, riesige Liste meiner Datenfelder .....) spezifiziert für FamilyMember –

+0

NVM, Ich denke, ich habe das Problem. –

+1

Liegt es daran, dass Ihr Formular für 'FamilyMember' und nicht für' Member' gedacht ist? –

0

Sie sind hier:

FamilyMemberFormSet = inlineformset_factory(Member, FamilyMember, fields =['name', 'occupation',]) 
+1

Vielen Dank für dieses Code-Snippet, das eine begrenzte, sofortige Hilfe bieten kann. Eine [richtige Erklärung würde ihren langfristigen Wert erheblich verbessern] (// meta.stackexchange.com/q/114762/350567), indem * warum * das eine gute Lösung für das Problem ist und es für die Zukunft nützlicher machen würde Leser mit anderen, ähnlichen Fragen. Bitte [bearbeiten] Sie Ihre Antwort, um einige Erklärungen hinzuzufügen, einschließlich der Annahmen, die Sie getroffen haben. – iBug

Verwandte Themen