【问题标题】:How to set default values into an Array Field Django?如何将默认值设置为数组字段 Django?
【发布时间】:2021-10-06 14:57:32
【问题描述】:

我想知道如何在 Django 数组字段模型中设置默认值。

我有一个名为“GameType”的 TextChoices 模型:

 class GameType(models.TextChoices):
    '''
    Enumeration of all different game types
    '''
    EVIL = 'evil', 'evil'
    SOLOCOOP = 'solo', 'solo'
    MULTI = 'multi', 'multi'

在我的项目模型中,我可以在每种模式下选择我的项目可用。然后我有这些行:

      game_types = ArrayField(
        models.CharField(
            default=GameType.SOLOCOOP,
            max_length=40,
            choices=GameType.choices
        ), default=default_item_game_types, null=False, blank=False)

两件事:

  1. 第一个默认键“GameType.SOLOCOOP”不起作用
  2. 默认列表也不起作用

这是我的“default_item_game_types”函数:

def default_item_game_types():
    '''Default callable to avoid errors
    '''
    return list(GameType)

在我的 CMS 中,我没有默认值:

Screenshot of my Game types field

我尝试了很多方法并搜索了很多解决方案,但没有一个适合我的案例。

是否有任何回应来解决我的问题?

感谢您的宝贵时间

问候,

史蒂文

【问题讨论】:

    标签: python arrays django field default


    【解决方案1】:

    1:你需要设置成这样

    self.SOLOCOOP = 'solo'
    

    可以在自定义方法或 init 中执行此操作,如果您知道它的默认值,这将比调用自定义方法容易得多。

    2:默认值基于 Charfield,因为它在某种意义上是一个字段数组。

    已编辑:

    那么只需执行 str_value 或更好地执行 solar 的键值,因为您已经在下面的参数中使用它作为选项。

    【讨论】:

    • 在文本选择中,我们有键“solo”,当这个文本选择被称为“Solo”时,文本显示,那么我不能将它设置为“self.SOLOCOOP = 'solo'”我需要我的自定义方法,因为我在其他类中使用它:(
    • GameType.choices['solo'] 或 GameType.choices.solo
    • 因为这是真正的关键
    猜你喜欢
    • 2013-12-29
    • 1970-01-01
    • 2020-07-13
    • 2017-07-14
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    相关资源
    最近更新 更多