Создание нового объекта возвращает поле со значением None - PullRequest
0 голосов
/ 02 декабря 2018

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

Мои модели выглядят так:

class KeyCategory(models.Model):
    program = models.ForeignKey('Program', verbose_name='Programm', on_delete=models.CASCADE)
    name = models.CharField('Name', max_length=100)
    events = models.ManyToManyField('Event', through='EventQuota')

    class Meta:
        verbose_name = 'Category'
        verbose_name_plural = 'Categories'
        ordering = ['name']
        unique_together = ("program", "name")
        permissions = (
            ('view_key_category', 'Have access to categories'),
        )


class EventQuota(models.Model):
    key_category = models.ForeignKey(KeyCategory, on_delete=models.CASCADE, related_name='key_quota')
    event = models.ForeignKey('Event', on_delete=models.CASCADE, related_name='key_quota')
    quota = models.PositiveIntegerField('Quota', default=0)

    class Meta:
        verbose_name = 'Quota'
        verbose_name_plural = 'Quotas'
        unique_together = ('key_category', 'event')

Когда я пытаюсь сейчас создать KeyCategory и мою EventQuota, поле «events» для KeyCategory всегда возвращает core.Event.None

        if program.pk == 1:
            for _ in range(0, 2):
                key_category = KeyCategory(
                    program=program,
                    name=random.choice(self.eventList)
                )
                key_category.save()
                event_quota = EventQuota(
                    key_category=key_category,
                    event = random.choice(eventList),
                    quota = random.randint(0,100)
                )
                event_quota.save()

Примечание: eventList в random.choice - это список объектов набора запросов.

Я пытался следовать Djangos Дополнительные поля в отношениях «многие ко многим» * Пример 1015 *,но почему-то кажется, что я что-то здесь упускаю или что-то делаю не так?Буду признателен за любую помощь!Спасибо в связи.

Регистрация:

import logging
logger = logging.getLogger(__name__)
logger.debug(key_category.events)

1 Ответ

0 голосов
/ 03 декабря 2018

Когда вы обращаетесь к key_category.events, вы запрашиваете значение поля (или одного объекта для полей внешнего ключа).Однако с отношением ManyToMany вы запрашиваете несколько объектов (набор запросов).Использование key_category.events.all () возвращает объекты, связанные с key_category, а не только одно значение.

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