Django Admin自定义显示字段. html
时间: 2024-06-11 16:11:10 浏览: 134
Django自定义列表 models字段显示方式
要自定义 Django Admin 的显示字段,可以使用 `list_display` 属性。在 Admin 模型中,可以使用 `list_display` 属性来指定要显示的字段。这些字段可以是模型中的任何字段,包括模型方法。
例如,在 `models.py` 中定义一个 `Person` 模型:
```python
class Person(models.Model):
name = models.CharField(max_length=50)
age = models.IntegerField()
email = models.EmailField()
def is_adult(self):
return self.age >= 18
is_adult.boolean = True
```
在 `admin.py` 中定义一个 `PersonAdmin` 类,并在 `list_display` 属性中指定要显示的字段:
```python
from django.contrib import admin
from .models import Person
class PersonAdmin(admin.ModelAdmin):
list_display = ('name', 'age', 'email', 'is_adult')
admin.site.register(Person, PersonAdmin)
```
在这个例子中,我们指定了 `name`、`age`、`email` 和 `is_adult` 字段来显示在 Admin 页面中。`is_adult` 是一个模型方法,我们可以在 `list_display` 中使用它来显示一个布尔值。
除了模型字段和模型方法之外,还可以指定一些其他的属性,例如外键的属性,如下所示:
```python
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'author', 'publisher__name')
```
在这个例子中,我们指定了 `title`、`author` 和 `publisher__name` 字段来显示在 Admin 页面中。`publisher__name` 是一个外键,我们使用双下划线语法来访问它的属性。
最后,还可以使用函数来自定义显示字段,如下所示:
```python
def full_name(obj):
return f"{obj.first_name} {obj.last_name}"
full_name.short_description = 'Full Name'
class PersonAdmin(admin.ModelAdmin):
list_display = ('name', 'age', 'email', full_name)
```
在这个例子中,我们定义了一个名为 `full_name` 的函数,它使用模型中的 `first_name` 和 `last_name` 字段来生成一个完整的姓名。我们将 `full_name` 函数指定为 `list_display` 中的一个字段,并使用 `short_description` 属性来指定该字段的显示名称。
阅读全文