When you display a Model as a list, Django displays each record as the string representation of the record object, which in our case is "Member object (1)", "Member object(2)" etc.:
To change this to a more reader-friendly format, we have two choices:
__str__()
of the Member Modellist_details
property of the Member ModelTo change the string representation, we have to define the __str__()
function of the Member Model in models.py
, like this:
my_tennis_club/members/models.py
:
from django.db import models
class Member(models.Model):
firstname = models.CharField(max_length=255)
lastname = models.CharField(max_length=255)
phone = models.IntegerField(null=True)
joined_date = models.DateField(null=True)
def __str__(self):
return f"{self.firstname} {self.lastname}"
Which gives us this result:
Defining our own __str__()
function is not a Django feature, it is how to change the string representation of objects in Python. Read more about Python objects in our Python object tutorial.
We can control the fields to display by specifying them in in a list_display
property in the admin.py
file.
First create a MemberAdmin()
class and specify the list_display
tuple, like this:
my_tennis_club/members/admin.py
:
from django.contrib import admin
from .models import Member
# Register your models here.
class MemberAdmin(admin.ModelAdmin):
list_display = ("firstname", "lastname", "joined_date",)
admin.site.register(Member, MemberAdmin)
Remember to add the MemberAdmin as an argumet in the admin.site.register(Member, MemberAdmin)
.
Now go back to the browser and you should get this result:
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!