2012-10-30 6 views
10

Ich habe diesen Fehler:Django. Ungültiges Schlüsselwortargument für diese Funktion ManyToMany

'Volk' ist ein ungültiges Schlüsselwort-Argument für diese Funktion

class Passage(models.Model): 
    name= models.CharField(max_length = 255) 
    who = models.ForeignKey(UserProfil) 

class UserPassage(models.Model): 
    passage = models.ForeignKey(Passage) 
    people = models.ManyToManyField(UserProfil, null=True) 

class UserProfil(models.Model): 
    user = models.OneToOneField(User) 
    name = models.CharField(max_length=50) 

Ich versuche:

def join(request): 
    user = request.user 
    user_profil = UserProfil.objects.get(user=user) 
    passage = Passage.objects.get(id=2) 
    #line with error 
    up = UserPassage.objects.create(people= user_profil, passage=passage) 
    return render_to_response('thanks.html') 

Wie man das richtig macht? Vielen Dank!

Antwort

20

Sie müssen das Objekt speichern/erstellen, bevor Sie ManyToMany Beziehungen hinzufügen:

up = UserPassage.objects.create(passage=passage) 
up.people.add(user_profil) 

ManyToMany Beziehungen sind nicht als Spalten in der Tabelle gespeichert. Lesen Sie die erste Antwort hier für eine gute Erklärung:

Django ManyToMany field is not created in model

@DanielRoseman: Because a ManyToMany isn't a field, at least not one that exists as a database column. It's a relationship with a linking table. You'll find that a table named myapp_teacher_subjects has been created, with foreign keys to both teacher and subjects.

Verwandte Themen