Объект (1) возникает при добавлении новых деталей в панели администратора

Когда я добавляю новые данные, появляется объект (1). Если я перейду в таблицу с отношением "многие к одному", она не покажет ID, а вместо этого покажет "объект (1)". Я пробовал менять наборы полей, но это не помогает. Когда я создаю "UserAdmin", он обрабатывает это как добавление пользователя.

Images

Images

Admin.py

from lib2to3.pgen2.token import OP
from statistics import mode

from attr import field
from .forms import createUserForm
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin

from .models import Account, sni, Question, Option


class AccountAdmin(UserAdmin):
    list_display = ('userID', 'is_staff', 'is_admin')
    search_fields = ['userID']
    readonly_fields = ()

    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('userID','name','password1','password2','dateOfBirth','homeAddress', 'is_staff', 'is_admin', 'sni'),
        }),
    )

    filter_horizontal = ()
    list_filter = ()
    fieldsets = ()
    ordering = ('userID',)



admin.site.register(Account, AccountAdmin)
admin.site.register(sni)
admin.site.register(Question)
admin.site.register(Option)

Model.py

from asyncio import FastChildWatcher
import email
from pyexpat import model
from xxlimited import Null
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager

class userCouncil(BaseUserManager):

    def create_user(self, userID, password=None):
        if not email:
            raise ValueError("Email is required")
        user = self.model(userID = self.normalize_email(userID))
        user.set_password(password)
        user.save(using=self._db)
        return user

    def create_superuser(self, userID, password):
        user = self.model(userID = self.normalize_email(userID))
        user.set_password(password)
        user.is_staff = True
        user.is_admin = True
        user.save(using=self._db)
        return user
             

class sni(models.Model):
    SNI = models.CharField(max_length=256, primary_key=True)
    Used = models.IntegerField(null=True, blank=True)
    password = None
    USERNAME_FIELD = 'SNI'

    def __str__(self):
        return self.SNI

class Account(AbstractBaseUser):
    userID = models.EmailField(primary_key= True ,max_length=256, unique=True)
    name = models.CharField(max_length=100)
    dateOfBirth = models.DateField(max_length=8, null=True)
    homeAddress = models.CharField(max_length=100, null=True)
    is_staff = models.BooleanField(default=False)
    is_admin = models.BooleanField(default=False)
    sni = models.OneToOneField(sni, on_delete=models.CASCADE, null=True, blank=True)

    USERNAME_FIELD = 'userID'

    objects = userCouncil()

    def __str__(self):
        return self.userID


    def has_perm(self, perm, obj=None):
        return self.is_admin

    def has_module_perms(self, app_label):
        return True

class Question(models.Model):
    QuestionsID = models.IntegerField(primary_key=True, unique=True)
    QuestionText = models.CharField(max_length=256, null = True)

class Option(models.Model):
    OptionID = models.IntegerField(primary_key=True, unique=True)
    OptionText = models.CharField(max_length=256, null=True)
    QuestionsID = models.ForeignKey(Question, on_delete=models.CASCADE)

Вашей модели Question нужна функция def __str__(self), как и вашей модели Account. Если вы хотите представить ее с помощью ID вопроса, то она должна выглядеть следующим образом:

def __str__(self):
   return self.QuestionsID

Не помню, выдаст ли он ошибку из-за того, что тип данных не string, в таком случае просто приведите его к string

Вернуться на верх