[django]自定义字段在后台显示的名称

默认情况下后台显示的字段名称是依据 models.py 中的字段名来显示的。 下面要做的就是自定义字段在后台的显示名称(比如显示为中文)。

只需在定义字段的时候定义参数 verbose_name 的值即可。

对于普通字段:

name = models.CharField(u'软件名称', max_length=200)

对于 OneToOneField, ForeignKey 及 ManyToManyField :

foo = models.OneToOneField(Foo, verbose_name=u'foobar')

software = models.ForeignKey(SoftWare, verbose_name=u'软件名称')

author = models.ManyToManyField(Author, verbose_name=u'作者')

这样之后,后台就会会显示我们定义的名称。

image

参考

Models | Django documentation | Django

more ...

[django]自定义 model 在后台显示的名称

默认情况下后台显示的 model 名称是依据 models.py 中的 class 名称来显示的。 下面要做的就是自定义 model 在后台的显示名称(比如显示为中文)。

只需在 model 类中定义 Meta 类并增加属性 verbose_name/verbose_name_plural 即可。

verbose_name 定义的是单数名称, verbose_name_plural 定义的是复数名称。

class Hello(models.Model):
    #...

    class Meta:
        verbose_name = u'software'
        verbose_name_plural = u'软件信息'

image

参考

Model Meta options | Django documentation | Django

more ...

[django]如何在 search_fields 中包含外键字段

我们知道在 admin.py 中定义 search_fields 可以控制在后台管理界面中能够搜索的字段。

但是,当 search_fields 包含外键字段时,此时进行搜索会报错:

TypeError at /admin/hello/foo/

Related Field has invalid lookup: icontains

解决的办法是修改 search_fields 中的外键字段名称。

将 search_fields 中的外键字段改为 foreign_key__related_fieldname 这种形式就可以了。 这种用法适用于 ForeignKey 及 ManyToManyField 。

models.py

class Hello(models.Model):
    name = models.CharField(max_length=100)

    #...


class Foo(models.Model):
    hello ...
more ...