Python 创建新对象将返回无值字段

Python 创建新对象将返回无值字段,python,django,many-to-many,Python,Django,Many To Many,我正试图为我的模型创建一个新对象,但一个字段的值始终为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.ManyToMan

我正试图为我的模型创建一个新对象,但一个字段的值始终为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时,KeyCategory的字段“events”总是返回
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()
注意:
random.choice
中的
eventList
是对象的查询集列表

我试着以Djangos为例,但不知何故,我似乎遗漏了一些东西,或者做了一些不正确的事情?非常感谢您的帮助!谢谢你

日志记录:

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

当您访问key_category.events时,您要求的是字段的值(或外键字段的单个对象)。但是,对于多个关系,您需要多个对象(查询集)。 使用key_category.events.all()返回与key_类别相关的对象,而不仅仅是单个值

core.events.all()

首先,模型中使用的名称与视图中使用的名称不同,请更正。这令人困惑。为什么在型号名称字段中使用前缀
access
name@Lemayzeur对不起,我弄错了,我以前改了一些名字,复制了一个错误的片段,现在它正确了你怎么/在哪里知道
events
返回一个空值?@Lemayzeur我记录/调试了for循环后的字段并检查了它的值,因此看到它返回了
core.Event.None
我不确定它是
None
,因为
core.Event.None
只是返回了应用程序的串联name+模型名+表示实例的字符串,以防您在事件模型中定义了
\uu str\uu()
方法。要确保这一点,请直接检查事件模型