我定义了name
字段,它在Person
模型中接受一个空字符串,如下所示。* 我使用Django 4.2.1:
# "models.py"
class Person(models.Model):
name = models.CharField(max_length=20, blank=True)
def __str__(self):
return self.name
然后,我将"-empty-"
设置为AdminSite.empty_value_display、ModelAdmin.empty_value_display、@admin.display()的empty_value或view_name.empty_value_display
,如下所示:
# "admin.py"
admin.site.empty_value_display = "-empty-" # Or
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
list_display = ("view_name",)
empty_value_display = "-empty-" # Or
@admin.display(empty_value="-empty-") # Or
def view_name(self, obj):
return obj.name
view_name.empty_value_display = '-empty-' # Or
但是,-empty-
没有显示,即使我保存了一个空字符串,如下所示:
那么,当我保存一个空字符串时,如何显示-empty-
呢?
2条答案
按热度按时间jhkqcmku1#
正如您所发现的,这只适用于
None
,而不是空字符串。实际上,Django通过[GitHub]检查了这一点:因此,这不适用于任何具有真实性
False
的东西,例如空字符串,空列表,False
等。将 * 不 * 呈现空值。但是,这并不意味着你不能在必要时将空字符串折叠为
None
:这将为具有真实性
False
的任何值(包括空字符串)返回None
,并且因此将用-empty-
呈现。j13ufse22#
AdminSite.empty_value_display,ModelAdmin.empty_value_display,@admin.display()的empty_value或下面的
view_name.empty_value_display
适用于None(Null)
值,但不适用于空字符串:因此,您需要定义
name
字段,该字段接受Person
模型中的None(Null)
值,如下所示。* 您应该将self.name
替换为str(self.name)
,如下所示,否则在Django Admin中保存None(Null)
值时会出现错误:然后,当您保存
None(Null)
值时,将显示-empty-
,如下所示: