0

我在我的用户模型中添加了一个名为 extra 的字段,如下所示:-

class ExtendedUser(models.Model):
user = models.OneToOneField(User)
extra = models.CharField(max_length=30, null=True)

# when a user is created, make sure an ExtendedUser is created too
def create_extended_user(sender, instance, created, *args, **kwargs):
    if created:
        extended_user = ExtendedUser(user=instance)
        extended_user.save()
post_save.connect(create_extended_user, sender=User)

在我的 admin.py 中,我尝试确保在编辑用户时可以编辑这个额外的字段:-

class ExtendedUserInline(admin.TabularInline):
    model = ExtendedUser
    fk_name = 'user'
    max_num = 1

class ExtendedUserAdmin(UserAdmin):
    inlines = [ExtendedUserInline]

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

但是,我在用户的管理页面中看不到额外的字段。

我做错了什么?

4

2 回答 2

0

编辑后您是否重新启动了开发服务器admin.py

另请参阅这个非常相似的线程

于 2013-02-24T17:20:21.790 回答
0

您的第一个代码块对我来说看起来不错,尽管您可能希望使用装饰器来提高可读性。这是一个更新的示例。

class ExtendedUser(models.Model):
user = models.OneToOneField(User)
extra = models.CharField(max_length=30, null=True)

# when a user is created, make sure an ExtendedUser is created too
@receiver(post_save, sender=User)    
def create_extended_user(sender, instance, created, *args, **kwargs):
        if created:
            extended_user = ExtendedUser(user=instance)
            extended_user.save()

更新答案:

您需要设置 AUTH_PROFILE_MODULE = 'app_name.ExtendedUser'

这是一个与您几乎相同的帖子。下面的一些评论值得一读。

于 2013-02-24T17:35:42.383 回答