Django:我不知道want是我的代码出了问题
所以我试图使用UserModel在我的模型中添加一个imagefield,所以我制作了这个模型Django:我不知道want是我的代码出了问题,django,django-models,django-admin,Django,Django Models,Django Admin,所以我试图使用UserModel在我的模型中添加一个imagefield,所以我制作了这个模型 from django.contrib.auth.models import User from django.db import models class ProfileImage(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, editable=False
from django.contrib.auth.models import User
from django.db import models
class ProfileImage(models.Model):
user = models.OneToOneField(User,
on_delete=models.CASCADE,
editable=False)
avatar = models.ImageField()
def user_avatar(self):
return self.profileimage.avatar
User.add_to_class('user_avatar', user_avatar)
我让管理员查看用户中的imagefield,
管理员
我不知道我的代码出了什么问题,当我打开一个用户查看图像字段时,有人知道问题出在哪里吗?在管理
字段中和字段集中希望您列出数据库中的实际列user\u avatar
是您编写的一个函数,因此您不能在user
模型中将其列为字段,因为该表中不存在该字段
为所有类型的用户信息建立一个更通用的模型,而不仅仅是像这样的图像
class Profile(models.Model):
"""
Profile model
"""
user = models.OneToOneField(
verbose_name=_('User'),
to=settings.AUTH_USER_MODEL,
related_name='profile',
on_delete=models.CASCADE
)
avatar = models.ImageField()
然后,您可以使用request.user.profile.avatar
访问虚拟形象,或者在管理员中注册您的profile
模型作为用户的内联
from django.contrib import admin
from django.contrib.auth import get_user_model
from myapp.accounts.models import Profile
User = get_user_model()
class ProfileInline(admin.StackedInline):
model = Profile
max_num = 1
can_delete = False
class MyUserAdmin(admin.UserAdmin):
inlines = [ProfileInline]
# unregister old user admin
admin.site.unregister(User)
# register new user admin that includes a UserProfile
admin.site.register(User, MyUserAdmin)
from django.contrib import admin
from django.contrib.auth import get_user_model
from myapp.accounts.models import Profile
User = get_user_model()
class ProfileInline(admin.StackedInline):
model = Profile
max_num = 1
can_delete = False
class MyUserAdmin(admin.UserAdmin):
inlines = [ProfileInline]
# unregister old user admin
admin.site.unregister(User)
# register new user admin that includes a UserProfile
admin.site.register(User, MyUserAdmin)