Найти - Пользователи
Полная версия: ManyToMany поле не получается привязать
Начало » Django » ManyToMany поле не получается привязать
1
valentjedi
Всем привет!
Есть две модели:
class Tag(models.Model):
    """
    model for tag
    """
    # name of tag
    name = models.CharField(max_length=30, verbose_name="tag name", unique=True)
    def __str__(self):
        return self.name
class Note(models.Model):
    """
    model for note
    """
    # date of publication note
    publication_date = models.DateField("Publication date", auto_now_add=True)
    # date of last change
    date_last_change = models.DateField("Last changed", auto_now=True)
    # note title
    title = models.CharField(max_length=200, verbose_name="Note title")
    # main text of note
    main_text = models.TextField("Note text")
    # tags
    tags = models.ManyToManyField(Tag, related_name='Tags')
    def __str__(self):
        return self.title

То есть у одной записи может быть несколько тэгов, и один тэг может быть у нескольких записей.
Однако если я добавляю запись через админку и добавляю в нее тэги, то эти же тэги появляются и в других записях. Даже если я просто добавляю тэги через свою таблицу, такие тэги появляются во всех записях.
Я пытался вручную создавать модель NoteTag с внешними ключами на модели Tag и Note, но это не помогло. Пытался гуглить, но не могу нормально сформулировать ситуацию. В джанго нуб.
valentjedi
Отвечаю сам себе, спасибо Stack Overflow за это
Здесь была не ошибка, а просто неясности в работе виджета Many to Many в админке Django. Этот виджет по умолчанию отображает все доступные тэги, а чтобы выбрать для записи конкретные, надо их выделить с помощью CTRL (множественный выбор). Чтобы проверить, что все работает правильно, можно использовать отладочную консоль django (python manage.py shell).
GreyZmeem
Посмотрите еще filter_horizontal. Я думаю так будет наглядней, чем кликать с зажатым ctrl
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB