2015-08-25 4 views
5

У меня есть 2 модели, как это:update_or_create с 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) 

мне нужно обновить теги поля - добавить новые значения. Как обновить экземпляр пользователей с помощью метода update_or_create?

Например:

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

Если пользователь «test_user» не существует, он должен быть создан, или если она существует tag_1 должны быть добавлены к этому пользователю.

ответ

3

Это не возможно добавить tags в update_or_create, потому что tags является ManyToManyField и, следовательно, включает промежуточную таблицу для запросов к базе данных.

Однако вы можете сделать это в две строки с помощью get_or_create:

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

Thx, я так и думал! – Mike

Смежные вопросы