Проблемы создания Django ManyToManyField - PullRequest
1 голос
/ 16 января 2010

У меня сейчас есть эти модели:

class Category(models.Model):
    name = models.CharField(max_length=200)
    parent = models.ForeignKey('self', blank=True, null=True, related_name='child')
    description = models.TextField(blank=True,null=True)

class Item(models.Model):
    name = models.CharField(max_length=500)
    ...
    tag = models.ManyToManyField(Category, null=True, blank=True, related_name='tag_item')

Моя проблема в том, что я не могу добавлять теги к любым уже созданным элементам. Если я попытаюсь сделать что-то вроде:

>>> cat = Category.objects.get(pk=1)
>>> cat.tag_item.create(item_id = 1)

Я получаю TypeError: 'item_id' is an invalid keyword argument for this function

Однако, если я это сделаю:

>>> cat.tag_item.create()

Я получаю только что созданный пустой элемент.

Я также не понимаю, как мне выполнить запрос, чтобы получить все теги для определенного элемента? Класса Tag нет, потому что мне не нужно указывать атрибут through на ManyToManyField, поскольку нет никаких дополнительных данных, поэтому я не могу использовать менеджер тегов для выполнения чего-то вроде Tag.objects.filter(item_id=3)

1 Ответ

4 голосов
/ 16 января 2010

Посмотрите на некоторые примеры здесь .

В основном, вы должны сделать:

class Item(models.Model):
    name = models.CharField(max_length=500)
    ...
    tags = models.ManyToManyField(Category, blank=True)

Чтобы создать элемент, тег и связать их, выполните следующие действия:

item = Item(name='test')
item.save()
tag = Category(name='foo')
item.tags.add(tag)

и запросить все теги:

item.tags.all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...