Django:我不知道我的代码有问题
Django: I dont know want is the wrong with my code
所以我尝试使用 UserModel 在我的模型中添加一个图像字段,所以我制作了这个模型
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)
然后我创建了一个管理员来查看用户中的图像字段,
admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
# Register your models here.
UserAdmin.fieldsets += ('Custom fields set', {'fields': ('user_avatar',)}),
我不知道我的代码有什么问题,当我打开用户查看图像字段和 时,有人知道问题出在哪里吗?
在管理中 fields
和 fieldsets
希望您列出数据库中的实际列。 user_avatar
是您编写的函数,因此您不能将其列为 User
模型中的字段,因为它不存在于 table.
中
为所有类型的用户信息制作一个更通用的模型,而不仅仅是图像,像这样;
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
模型注册为 User
;
的内联
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)
所以我尝试使用 UserModel 在我的模型中添加一个图像字段,所以我制作了这个模型
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)
然后我创建了一个管理员来查看用户中的图像字段, admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
# Register your models here.
UserAdmin.fieldsets += ('Custom fields set', {'fields': ('user_avatar',)}),
我不知道我的代码有什么问题,当我打开用户查看图像字段和
在管理中 fields
和 fieldsets
希望您列出数据库中的实际列。 user_avatar
是您编写的函数,因此您不能将其列为 User
模型中的字段,因为它不存在于 table.
为所有类型的用户信息制作一个更通用的模型,而不仅仅是图像,像这样;
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
模型注册为 User
;
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)