2015-08-25 5 views
5

I 2 Modelle haben, wie folgt aus:update_or_create mit ManyToManyField

class Subs(models.Model): 
    tag = models.CharField(max_length=100) 

class Users(models.Model): 
    name = models.CharField(max_length=100) 
    tags = models.ManyToManyField(Subs) 

Ich brauche Tags Feld zu aktualisieren - neue Werte hinzufügen. Wie kann ich die Instanz von Benutzern mit der Methode update_or_create aktualisieren?

Zum Beispiel:

tag_1 = Subs.object.get(pk=1) 
Users.objects.update_or_create(name='test_user', tags=tag_1) 

Wenn Benutzer test_user 'existiert nicht, es erstellt werden muss, oder wenn es vorhanden ist tag_1 muss an diesen Benutzer hinzugefügt werden.

Antwort

3

Es ist nicht möglich, tags in update_or_create hinzuzufügen, weil tags ein ManyToManyField ist und deshalb beinhaltet eine Zwischentabelle für Datenbankabfragen.

Sie können es in zwei Linien jedoch tun get_or_create mit:

user = Users.objects.get_or_create(name='test_user') 
user.tags.add(tag_1) 
+0

Thx, dachte ich so viel! – Mike

Verwandte Themen