【问题标题】:Can an empty ArrayField on Django Admin be saved?可以保存 Django Admin 上的空 ArrayField 吗?
【发布时间】:2021-04-25 17:15:48
【问题描述】:

models.py

class BlogArticle(models.Model):
    # ...
    likers = ArrayField(models.GenericIPAddressField(), default=list)

admin.py

admin.site.register(BlogArticle)

当使用 Django 管理页面处理具有空列表的文章时,输入为空。这对我来说没问题,但是在保存对象时(例如在编辑其他字段之后),我收到此错误:

它似乎被解释为None 值,而当前值实际上是一个有效的空列表。

为什么 Django 会使用相同的方式来表示管理员中的空列表和 None 值?我想知道它是不是设计不佳,或者我在这里遗漏了什么。

请注意,添加 blank=True 会使情况变得更糟,因为它不会引发任何错误,但会默默地将空列表转换为 None。

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    我在发帖之前就想通了,但认为它仍然对其他人有用

    简单(也许对你们大多数人来说很明显)的解决方案是:

    ArrayField(models.GenericIPAddressField(), default=list, blank=True, null=False)

    【讨论】:

      猜你喜欢
      • 2020-11-16
      • 2017-12-26
      • 2020-08-01
      • 1970-01-01
      • 2010-10-09
      • 2022-12-17
      • 2011-03-31
      • 1970-01-01
      • 2016-07-26
      相关资源
      最近更新 更多