当没有值时,是否存在在管理中显示默认值的djangtastic方法?像“不适用”,但不是将其保存到数据库中?
当我将以下模型中的所有字段设置为admin中的readonly时,前端显示看起来像底部的图像。它看起来像是应该有一个价值或一个盒子或东西。如果没有一种简单的方法来做我想要的事情,那么还有另一种解决方案可以让前端管理员更清楚地为用户服务吗?
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)
显示为admin的字段的屏幕截图
答案 0 :(得分:5)
发生的事情是您实际在CharFields中保存空字符串''
而不是None
值(因为blank=True
)。所以Django-admin显示你在db中保存的字符串(在这种情况下,没有)。
如果您将CharField更改为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..
答案 1 :(得分:0)
从Django 1.9开始,您可以在Django管理员的站点,模型或字段级别使用empty_value_display
。在模型级别:
class YourModelAdmin(admin.ModelAdmin):
empty_value_display = '---'