如何注册继承子类在Django的admin.py文件?

问题描述 投票:0回答:1
  • 项目名称:融合
  • 应用程序名称: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.朋友

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

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

我想,以显示管理面板子模型(台式机,笔记本,手机),以便管理员可以从管理面板中添加一些数据。


Project Structure Image :

python django django-models django-admin django-inheritance
1个回答
1
投票

我可以看到在你的代码Deviceabstract 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)
© www.soinside.com 2019 - 2024. All rights reserved.