jac*_*zil 3 django django-models django-admin django-modeladmin
当没有值时,是否有一种在管理中显示默认值的djangtastic方法?像'不适用',但不是要保存到数据库?
当我将下面模型中的所有字段设置为只在管理员中读取时,前端显示看起来像底部的图像.它看起来像是应该有一个价值或一个盒子或东西.如果没有一种简单的方法来完成我正在寻找的东西,那么还有另一种解决方案可以让前端管理员更清楚地为用户服务吗?
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)
Run Code Online (Sandbox Code Playgroud)
显示管理员的字段截图:

发生的事情是你实际上''在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..
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2046 次 |
| 最近记录: |