django/taggit - ошибка: объекты MyData должны иметь значение первичного ключа, прежде чем вы сможете получить доступ к их тегам

Я пытаюсь использовать django-taggit (см.). Это то, что у меня есть в моем коде:

модели.py

class MyData(models.Model):
    title = models.CharField(blank=True, max_length=50)
    .....
    tags = TaggableManager()

просмотры.py

g = MyData(title=f_title)   
g.tags.add( "mytag" )
g.save()

По какой-то причине, когда я пытаюсь сохранить теги и данные, я получаю эту ошибку:

Объекты MyData должны иметь значение первичного ключа, прежде чем вы сможете получить доступ к их тегам.

Любые идеи? Благодарю вас!


person avatar    schedule 05.04.2011    source источник


Ответы (3)


используйте MyData.objects.create(title=f_title), чтобы сохранить его в БД и получить идентификатор, а затем получить доступ к tags

g = MyData.objects.create(title=f_title)  
g.tags.add( "mytag" )
g.save()
person manji    schedule 05.04.2011

Изменить порядок. Сначала сохраните — что назначает первичный ключ — затем возитесь с тегами.

person S.Lott    schedule 05.04.2011

Как говорится в ошибке, ваш объект MyData должен иметь первичный ключ, прежде чем вы добавите теги. Это связано с тем, что теги хранятся в виде отношения «многие ко многим», и вам нужен идентификатор, чтобы вы могли связать его в отдельной таблице. Простое решение:

g = MyData(title=f_title)   
g.save()
g.tags.add( "mytag" )
g.save()
person gcbirzan    schedule 05.04.2011