Уведомления

Группа в Telegram: @pythonsu

#1 Май 20, 2014 16:57:05

valentjedi
Зарегистрирован: 2014-03-06
Сообщения: 26
Репутация: +  3  -
Профиль   Отправить e-mail  

ManyToMany поле не получается привязать

Всем привет!
Есть две модели:

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, но это не помогло. Пытался гуглить, но не могу нормально сформулировать ситуацию. В джанго нуб.



#!/usr/bin/env python
# -*- coding: utf-8 -*-

Офлайн

#2 Май 21, 2014 09:07:37

valentjedi
Зарегистрирован: 2014-03-06
Сообщения: 26
Репутация: +  3  -
Профиль   Отправить e-mail  

ManyToMany поле не получается привязать

Отвечаю сам себе, спасибо Stack Overflow за это
Здесь была не ошибка, а просто неясности в работе виджета Many to Many в админке Django. Этот виджет по умолчанию отображает все доступные тэги, а чтобы выбрать для записи конкретные, надо их выделить с помощью CTRL (множественный выбор). Чтобы проверить, что все работает правильно, можно использовать отладочную консоль django (python manage.py shell).



#!/usr/bin/env python
# -*- coding: utf-8 -*-

Офлайн

#3 Май 21, 2014 10:08:11

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

ManyToMany поле не получается привязать

Посмотрите еще filter_horizontal. Я думаю так будет наглядней, чем кликать с зажатым ctrl

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version