Django: Я не знаю, что это неправильно с моим кодом - PullRequest
0 голосов
/ 03 августа 2020

Итак, я пытался добавить поле изображения в свою модель с помощью 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',)}),

Я не знаю, что не так с моим кодом, когда я открываю пользователя, чтобы увидеть поле изображения и это произошло , кто-нибудь знает в чем проблема?

1 Ответ

1 голос
/ 03 августа 2020

В admin fields и fieldsets ожидает, что вы укажете фактические столбцы в базе данных. user_avatar - это функция, которую вы написали, поэтому вы не можете указать ее как поле в модели User, потому что ее нет в этой таблице.

Сделайте более общую модель c для всех типов пользовательской информации, а не только для изображения, например, здесь 1012 *;

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)
...