0

次のように、extra という User モデルにフィールドを追加しました。

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

コードの最初のブロックは問題ないように見えますが、読みやすくするためにデコレータを使用することもできます。更新された例を次に示します。

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 に答える
0

編集後、開発サーバーを再起動しましたadmin.pyか?

この非常によく似たスレッドも参照してください。

于 2013-02-24T17:20:21.790 に答える