Django - list_display 属性不显示带有 OneToOne 和用户模型的模型的任何字段
Django - list_display attribute not showing any fields for Model with OneToOne with User Model
所以我遇到了一些奇怪的事情。我刚刚注意到 none 我想要显示在我的管理页面上的字段不存在。失败的模型是 "Profile" 模型,它是用户模型的扩展,具有一对一关系代码看起来像这样。
models.py
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
# Create your models here.
#We need to extend the User Model
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.CharField(max_length=4096, null=True)
email_confirmed = models.BooleanField(default=False)
def __str__(self):
return self.user.username
def get_username(self):
return self.user.username
def get_bio(self):
return self.bio
def get_email_confirmed(self):
return self.email_confirmed
@receiver(post_save, sender=User)
def update_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
instance.profile.save()
admin.py
from django.contrib import admin
from .models import Profile
# Register your models here.
class ProfileAdmin(admin.ModelAdmin):
list_display = ('email_confirmed', 'bio')
admin.site.register(Profile)
然而,即使进行了这些更改,管理页面仍如下所示:
我还没有完全完成,因为我现在没有可用的 Django 环境。不过试试这个。我有一个类似的代码。可能是吧。
class ProfileAdmin(admin.ModelAdmin):
list_display = ('email_confirmed', 'bio')
admin.site.register(Profile,ProfileAdmin)
您的 admin.py 应如下所示:
from django.contrib import admin
from .models import Profile
# Register your models here.
class ProfileAdmin(admin.ModelAdmin):
list_display = ('email_confirmed', 'bio')
admin.site.register(Profile, ProfileAdmin)
最后一种方法应该同时注册模型和管理员class。
所以我遇到了一些奇怪的事情。我刚刚注意到 none 我想要显示在我的管理页面上的字段不存在。失败的模型是 "Profile" 模型,它是用户模型的扩展,具有一对一关系代码看起来像这样。
models.py
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
# Create your models here.
#We need to extend the User Model
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.CharField(max_length=4096, null=True)
email_confirmed = models.BooleanField(default=False)
def __str__(self):
return self.user.username
def get_username(self):
return self.user.username
def get_bio(self):
return self.bio
def get_email_confirmed(self):
return self.email_confirmed
@receiver(post_save, sender=User)
def update_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
instance.profile.save()
admin.py
from django.contrib import admin
from .models import Profile
# Register your models here.
class ProfileAdmin(admin.ModelAdmin):
list_display = ('email_confirmed', 'bio')
admin.site.register(Profile)
然而,即使进行了这些更改,管理页面仍如下所示:
我还没有完全完成,因为我现在没有可用的 Django 环境。不过试试这个。我有一个类似的代码。可能是吧。
class ProfileAdmin(admin.ModelAdmin):
list_display = ('email_confirmed', 'bio')
admin.site.register(Profile,ProfileAdmin)
您的 admin.py 应如下所示:
from django.contrib import admin
from .models import Profile
# Register your models here.
class ProfileAdmin(admin.ModelAdmin):
list_display = ('email_confirmed', 'bio')
admin.site.register(Profile, ProfileAdmin)
最后一种方法应该同时注册模型和管理员class。