如何在 Django 的 admin.py 文件中注册继承的子 class?
How to register inherited sub class in admin.py file in django?
- 项目名称:融合
- 应用程序名称:admin_lte
- Python 3.7
- Django 2
- MySql
问题是 "I want to register sub model in django admin-panel",当我在 admin.py 文件中编写模型注册代码时出现以下错误。
django.core.exceptions.ImproperlyConfigured: The model Device is abstract, so it cannot be registered with admin.
NOTE : I used multiple separated model file.
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)
我想在管理面板中显示子模型(台式机、笔记本电脑、移动设备),以便管理员可以从管理面板添加一些数据。
Project Structure Image :
我可以在你的代码中看到 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)
- 项目名称:融合
- 应用程序名称:admin_lte
- Python 3.7
- Django 2
- MySql
问题是 "I want to register sub model in django admin-panel",当我在 admin.py 文件中编写模型注册代码时出现以下错误。
django.core.exceptions.ImproperlyConfigured: The model Device is abstract, so it cannot be registered with admin.
NOTE : I used multiple separated model file.
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)
我想在管理面板中显示子模型(台式机、笔记本电脑、移动设备),以便管理员可以从管理面板添加一些数据。
Project Structure Image :
我可以在你的代码中看到 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)