2017-12-24 3 views
0

그래서 나는 이상한 것을 발견했습니다. 방금 내 관리 페이지에 표시하고 싶은 필드가없는 것을 확인했습니다. 실패한 모델은 OneToOne 관계를 사용하여 User 모델의 확장 인 "프로필"모델입니다. 코드는 다음과 유사합니다.Django - list_display 속성이 사용자 모델이있는 OneToOne이있는 모델의 필드를 표시하지 않습니다.

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) 

그러나, 이러한 변화와 함께, 관리자 페이지는 다음과 같습니다

enter image description here

답변

1

나는 천국 ' 내가 지금 장고 환경을 가지고 있지 않아 완전히 사라졌다. 단지 이것을 시도해보십시오. 나는 비슷한 코드를 가지고 있었다. 그럴 수있어.

class ProfileAdmin(admin.ModelAdmin): 
    list_display = ('email_confirmed', 'bio') 

admin.site.register(Profile,ProfileAdmin) 
+0

그 해결책을 가져 주셔서 감사합니다. 그 해결책은 불행히도 "MediaDefiningClsas '객체를 반복 할 수 없습니다." – Alien13

+0

인라인을 사용 했습니까? 내 개인 git에서 내 코드를 반영하기 위해 내 대답을 편집 중입니다 –

+0

나는 지금까지 어떤 인라인도 사용하지 않고 있습니다. – Alien13

1

귀하의 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) 

마지막 방법은 모델과 관리 클래스를 모두 등록해야합니다.

관련 문제