3

私は Django を初めて使用し、カスタム ユーザー モデルの作成に問題があります。django ドキュメントのすべての手順に従いました。ここに私のモデルがあります:

    class UserProfile(models.Model):
user = models.OneToOneField(User)
comment = models.BooleanField()
score = models.IntegerField(null=True)
profilpic = models.ImageField(upload_to="/profilepics")
bio = models.CharField(max_length=140)

次に、django-registration で複数のユーザーを作成しました。しかし、管理者に移動して、作成したユーザーを削除しようとしたり、ユーザー名をクリックしようとすると、次のエラーが発生します。

AttributeError at /admin/auth/user/3/
'UserProfile' object has no attribute 'username'
Exception Value:    
'UserProfile' object has no attribute 'username'
Exception Location: /Users/marc-antoinelacroix/Desktop/Site/sportdub/projet/models.py in   __unicode__, line 14

したがって、UserProfile モデルで「ユーザー名」を作成し、それを django のユーザーのユーザー名に関連付ける必要があると思いますが、その方法がわかりません...

どんな助けでも大歓迎です。

ありがとう!

4

2 に答える 2

5

アクセスしようとしているようです

def __unicode__(self):
    return self.username

しかし、そうでなければなりません

def __unicode__(self):
    return self.user

ここにデモがあります

プロジェクト/アカウント/models.py

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    homepage = models.URLField(verify_exists=False)
    #...

User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])

プロジェクト/アカウント/admin.py

from django.contrib import admin
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from account.models import UserProfile

admin.site.unregister(User)

class UserProfileInline(admin.StackedInline):
    model = UserProfile

class UserProfileAdmin(UserAdmin):
    inlines = [UserProfileInline]

admin.site.register(User, UserProfileAdmin)

プロジェクト/settings.py

AUTH_PROFILE_MODULE = "account.userprofile"
于 2012-10-11T09:36:33.143 に答える
0

UserProfile.__unicode__()いいえ、適切に定義する必要があります。User関連するモデルからユーザー名を取得する必要があります。

于 2012-10-11T09:25:18.287 に答える