Models.py
class Student(models.Model):
first_name = models.CharField(max_length=255)
class Room(models.Model):
room_name = models.CharField(max_length=20)
student = models.OneToOneField(Student, on_delete=models.CASCADE)
Admin.py
class RoomAdmin(admin.ModelAdmin):
model = Room
fields = ('room_name', 'student__first_name',)
我需要在添加房间管理页面上显示字段“ first_name”。 因此,我将管理员设置为遵循源代码,但是却收到错误消息。
ERRORS:
<class 'building.admin.RoomAdmin'>: (admin.E108) The value of 'fields[1]' refers to 'student__first_name', which is not a callable, an attribute of 'RoomAdmin', or an attribute or method on 'building.Room'.
对此请多加指导或建议:)
答案 0 :(得分:1)
如错误所示, student__first_name
不是 Room
类的字段。在这种情况下,您可以将可调用函数定义为
class RoomAdmin(admin.ModelAdmin):
model = Room
fields = ('room_name', 'first_name',)
def first_name(self, room):
return room.student.first_name