gpt4 book ai didi

django - 这怎么可能使用 list_display=[] 在管理员中调用 OneToOneField 值

转载 作者:行者123 更新时间:2023-12-04 10:14:09 24 4
gpt4 key购买 nike

我的模特

    class user_profile(models.Model):

user = models.OneToOneField(User, on_delete=models.CASCADE)
age = models.IntegerField()

profile_created = models.DateTimeField(auto_now_add=True, auto_now=False)
timestamp = models.DateTimeField(auto_now=True, auto_now_add=False)

admin.py


class UserProfileAdmin(admin.ModelAdmin):
list_display = ['user','user.username','profile_created', 'timestamp']
admin.site.register(user_profile, UserProfileAdmin)

它显示以下错误:
ERRORS:
<class 'testapp.admin.UserProfileAdmin'>: (admin.E108) The value of 'list_display[1]' refers to 'user.username', which is not a call
able, an attribute of 'UserProfileAdmin', or an attribute or method on 'testapp.user_profile'.

如何在 admin.py 中获取另一个表值?

最佳答案

根据 PEP8 ,类名通常应使用 CapWords 约定。

class UserProfile(models.Model):
# your code

此外,要在 DjangoAdmin 中显示用户名,您应该定义一个方法,
from django.core.exceptions import ObjectDoesNotExist


class UserProfileAdmin(admin.ModelAdmin):
list_display = ['user', 'username', 'profile_created', 'timestamp']

def username(self, instance): # name of the method should be same as the field given in `list_display`
try:
return instance.user.username
except ObjectDoesNotExist:
return 'ERROR!!'


admin.site.register(UserProfile, UserProfileAdmin)

关于django - 这怎么可能使用 list_display=[] 在管理员中调用 OneToOneField 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61166018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com