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

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

models.py

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

views.py

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

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

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

Есть идеи?Спасибо!

Ответы [ 3 ]

5 голосов
/ 05 апреля 2011

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

g = MyData.objects.create(title=f_title)  
g.tags.add( "mytag" )
g.save()
2 голосов
/ 05 апреля 2011

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

g = MyData(title=f_title)   
g.save()
g.tags.add( "mytag" )
g.save()
2 голосов
/ 05 апреля 2011

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

...