修改django管理员用户界面

时间:2013-10-12 08:31:28

标签: python django django-models django-admin

我是django的新手,我正在关注一些视频讲座。完全按照说明完成后无法添加额外的归档用户管理界面。我附上modes.py和admin.py进行检查。请帮帮我

models.py

class UserProfile(models.Model):
    user = models.OneToOneField(User, unique=True)
    #Extra values
    bio = models.TextField(null=True)

    def __unicode__(self):
        return '%s Profile' % self.user 

def create_profile(sender, instance, created, **kwargs):
    if created:
        profile, created = UserProfile.objects.get_or_create(user=instance)

from django.db.models.signals import post_save

post_save.connect(create_profile, sender=User )

Admin.py

class UserProfileInLIne(admin.StackedInline):
    model = UserProfile
    can_delete = False

class UserProfileAdmin(UserAdmin):
    inline = (UserProfileInLIne, )

admin.site.unregister(User)
admin.site.register(User, UserProfileAdmin)

2 个答案:

答案 0 :(得分:1)

为什么不只是为自己省去麻烦并使用自定义用户模型?

> django docs on custom user model

这样你就有了一个用于写入的模型,只有一个模型用于在你的视图中调用它时。

# settings.py
AUTH_USER_MODEL = 'yourapp.UserProfile'

# models.py
class UserProfile(AbstractBaseUser):
    #Extra values
    bio = models.TextField(null=True)


# admin.py
admin.site.register(UserProfile)

以及您想要使用用户实例的其他任何地方(即其他模型,视图)只需使用settings.AUTH_USER_MODEL

答案 1 :(得分:1)

我认为问题在于您使用的是inline而不是inlines。在这里,您可以找到django源代码ModelAdmin class的链接。

希望这有帮助。