django-taggit получить строку тегов из формы

Я пытаюсь использовать django-taggit в качестве модели тегов.

модель.py

class Product(models.Model):
    product_no = models.IntegerField(primary_key=True)
    ... 
    tags = TaggableManager(blank=True)

просмотры.py

def action(request):
    product = Product()

    user = User.objects.get(id=request.user.id)
    product.seller_username = user
    ...

    product.save()

    tag_list = taggit.utils._parse_tags(request.POST['tags'])
    product.tags.add(*tag_list)

Когда я вызываю метод product.tags.add(), я получаю сообщение об ошибке

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

Многие решения, которые я нахожу, сообщают мне, что нужно поместить product.save() перед product.tags.add(), чтобы сделать pk доступным до доступа к полю «многие ко многим». Я пробовал и все равно ошибка.

Примечание: метод save() работает правильно. Он создает новый объект в списке продуктов и его можно увидеть в интерфейсе администратора.


person Niti Santikul    schedule 16.10.2017    source источник
comment
Вы устанавливаете значение для product.product_no перед его сохранением?   -  person solarissmoke    schedule 17.10.2017
comment
Я не устанавливаю его, но поскольку это поле pk, оно должно устанавливаться автоматически методом save(), не так ли.   -  person Niti Santikul    schedule 17.10.2017


Ответы (1)


Кажется, я должен изменить

product_no = models.IntegerField(primary_key=True)

to

product_no = models.AutoField(primary_key=True)

и это исправлено.

person Niti Santikul    schedule 19.10.2017