- Project Name : fusion
- App Name : admin_lte
- Python 3.7
- Django 2
- MySql
Question is “I want to register sub model in django admin-panel”,when i write code for model registration in admin.py file that time occurred below error.
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 (Model File)
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 File
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)
I want to show sub model (Desktop,Laptop,Mobile) in admin panel so admin can add some data from admin panel.
Advertisement
Answer
I can see in your code Device
is a abstract model
. So, we should not register it because abstract models do not have associated tables in databases.
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)