Как зарегистрировать унаследованный подкласс в файле admin.py в django? - PullRequest
0 голосов
/ 04 февраля 2019
  • Название проекта: fusion
  • Имя приложения: admin_lte
  • Python 3.7
  • Django 2
  • MySql

Вопрос в том, что «я хочу зарегистрировать подмодель в админ-панели django», когда я пишу код для регистрации модели в файле admin.py, что время произошло ниже ошибки.

django.core.exceptions.ImproperlyConfigured: модель Устройство является абстрактным, поэтому его нельзя зарегистрировать с помощью администратора.

ПРИМЕЧАНИЕ. Я использовал несколько отдельных файлов модели.

device.py (файл модели)

from django.db import models

class Device(models.Model):
device_type = models.CharField(max_length=100,blank=False)
price = models.IntegerField()
status =  models.CharField(max_length=10, default="SOLD")
issues = models.CharField(max_length=100, default="No Issues")

class Meta:
    abstract = True

def __str__(self):
    return 'Device_type:{0} Price:{1}'.format(self.device_type,self.price)


#Inheritance Concept
class Laptop(Device):
   pass
   class Meta:
       db_table = "laptop"

class Desktop(Device):
   pass
   class Meta:
       db_table = "Desktop"

class Mobile(Device):
    pass
    class Meta:
        db_table = "Mobile"

__ init__.py Файл

from django_adminlte.models.employee import Employee
from django_adminlte.models.device import Device

admin.py

from django.contrib import admin
from.models import Employee
from.models import Device

admin.site.register (Employee)
admin.site.register (Device)

Я хочу показать вспомогательную модель (Настольный компьютер, Портативный компьютер, Мобильный компьютер) в панели администратора, чтобы администратор мог добавить некоторые данные из панели администратора.


Изображение структуры проекта:

1 Ответ

0 голосов
/ 04 февраля 2019

Я вижу в вашем коде Device это abstract model.Поэтому мы не должны регистрировать его, потому что абстрактные модели не имеют связанных таблиц в базах данных.

from django.contrib import admin
from .models import Employee, Laptop, Mobile, Desktop

admin.site.register(Employee)
admin.site.register(Laptop)
admin.site.register(Mobile)
admin.site.register(Desktop)
...