gpt4 book ai didi

django - 如何在Django admin中显示没有值的值?

转载 作者:行者123 更新时间:2023-12-01 11:54:48 30 4
gpt4 key购买 nike

当没有值时,是否有 Djangotastic 方法来显示管理员中字段的默认值?像'n/a',但不将其保存到数据库中?

当我在管理中将下面模型中的所有字段设置为只读时,前端显示看起来像底部的图像。它在视觉上感觉折叠起来,就像它应该有一个值或一个盒子或其他东西一样。如果没有一种简单的方法来做我正在寻找的东西,那么是否有另一种解决方案可以让前端管理员对用户更加清晰?

class Package(models.Model):
packaging_format = models.CharField(max_length=40)
package_delivery_pattern = models.CharField(max_length=30, blank=True)
package_delivery_comments = models.CharField(max_length=250, blank=True)
package_manifest_filename = models.CharField(max_length=50)
package_description = models.CharField(max_length=250, blank=True)
package_naming_pattern = models.CharField(max_length=50)

管理中显示的字段屏幕截图:
Screenshot of admin with readonly package fields

最佳答案

发生的事情是您实际上保存了一个空字符串 ''在你的 CharFields 而不是 None值(因为 blank=True )。所以 Django-admin 显示了你保存在 db 中的字符串(在这种情况下,什么都没有)。

如果您将 CharFields 更改为 null=True而不是 blank=True ,您将节省 NULL在您的数据库中,而不是空字符串。这样,你就会得到你想要的行为。

编辑:我知道不推荐使用此解决方案(遵循 Django Docs),但这是您想要的行为。 Django-admin 只是向您显示数据库中的字符串,即 '' .

我想到的另一个解决方案是为您的 Package 修改 ModelAdmin模型,类似于:

class PackageAdmin(admin.ModelAdmin):
readonly_fields = ['show_package_delivery_pattern', ...]

def show_package_delivery_pattern(self, obj):
if obj.package_delivery_pattern:
return obj.package_delivery_pattern
else:
return 'N/A'
# same with all your CharFields..

关于django - 如何在Django admin中显示没有值的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8215906/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com