我是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用户的用户名相关联,但我不知道该怎么做...
欢迎任何帮助。
谢谢!
答案 0 :(得分: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"
答案 1 :(得分:0)
不,您需要正确定义UserProfile.__unicode__()
。它需要从相关的User
模型中获取用户名。