1

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

模型.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 )

管理员.py

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

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

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

2 回答 2

1

为什么不直接省去麻烦并使用自定义用户模型呢?

> 关于自定义用户模型的 django 文档

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

# 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

于 2013-10-12T09:11:54.533 回答
1

我认为问题在于您使用inline的是inlines. 这里有 django 源代码ModelAdmin 类的链接。

希望这可以帮助。

于 2013-10-12T10:10:52.047 回答