簡體   English   中英

創建新對象將返回無值的字段

[英]Creating new object returns field with None value

我正在嘗試創建模型的新對象,但請繼續為一個字段獲取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的“事件”字段始終返回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 Extra字段 ,但是似乎以某種方式我在這里丟失了某些內容,或者做的方法不正確? 將不勝感激! 謝謝。

記錄:

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

當您訪問key_category.events時,您正在詢問字段的值(或外鍵字段的單個對象)。 但是,對於ManyToMany關系而言,您需要多個對象(一個查詢集)。 使用key_category.events.all()返回與key_category相關的對象,而不僅僅是單個值。

core.events.all()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM