有人知道如何在中注册从抽象类派生的admin.py子类(抽象类在文件abstract_models.py文件中)--我在web上尝试了主要的解决方案,但似乎不起作用。这是可能的,因为不同的贡献者指出,但不知道我做错了什么!
我的文件夹结构是这样的
“”“
gaasc/ <- project folder
contain urls.py, admin.py,models.py,etc
gaasc_apps/<- contains all apps
core/
abstract_models.py
models.py
admin.py,...
about_app/
models.py,
admin.py
urls.py“”“
我试图利用核心应用程序中的抽象类来构建about_app应用程序中的模型。是的,在不同的应用程序之间。
采取的步骤如下:
在core/models.py中导入
3.从core/models.py导入about_app/models.py中的抽象类
_
中
abstract_models.py文件(在核心/抽象_Models.py中)
import uuid
from django.db import models
class AbstractTimeStampModel(models.Model):
"""TimeStampModel that holds created_date and updated_date field"""
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
created_date = models.DateTimeField("Created date", auto_now_add=True)
updated_date = models.DateTimeField("Updated date", auto_now=True)
def __str__(self):
return self.created_date
class Meta:
abstract = True
class AbstractTextAreaOnly(AbstractTimeStampModel):
"""Abstract class for textfield"""
about = models.TextField(
verbose_name="Description",
blank=True
)
def __str__(self):
return "Textonly class-"+self.id
class Meta:
ordering = ['created_date']models.py in core/models.py s.py
from django.db import models
from .abstract_models import (
AbstractTextAreaOnly,
)现在,我想在about_app/models.py中使用这个抽象类/所以我在models.py中的派生类看起来是:
from django.db import models
from gaasc_apps.core.models import(
AbstractTextAreaOnly,
)
class GeneralInformation(AbstractTextAreaOnly):
'''
Gives general information of college
'''
class Meta():
db_table = "general_information"
verbose_name="General information"
ordering=['created_date']我尝试了什么:
我尝试使用以下方式进行注册:
method1:
在about_app/admin.py中的admin.py中
from django.contrib import admin
from .models import (
GeneralInformation,
)
@register(GeneralInformation)
class GeneralInformationAdmin(admin.ModelAdmin):
pass方法2:
在大约app/Admin.py
from django.contrib import admin
from .models import (
GeneralInformation,
)
class GeneralInformationAdmin(admin.ModelAdmin):
pass
admin.site.register(GeneralInformation,GeneralInformationAdmin)method3:
在大约app/Admin.py
......
class GeneralInformationAdmin(admin.ModelAdmin):
readonly_fields = ('id','about','created_date','updated_date')
list_display=('id','about','created_date')
fieldsets=[
('Id',{'fields':['id']}),
('About',{'fields':['about']}),
('Created_Date',{'fields':['created_date']}),
]
admin.site.register(GeneralInformation,GeneralInformationAdmin)对于所有这些解决方案,django的admin /仪表板中没有显示GeneralInformation。解决办法似乎很简单,但我不知道为什么不起作用?我尝试过的一些解决方案如下:
How to register inherited sub class in admin.py file in django?
Django admin model Inheritance is it possible?
Register abstract model in admin django 1.6
版本: Django-2.2 python-3.6
发布于 2019-12-02 00:56:02
我已经找到了解决这个问题的方法,很简单,我们需要在每个应用程序中定义配置设置。由于缺少配置设置和perticular目录结构,它无法读取它。
在about_app/__init__.py中:
default_app_config = "gaasc_apps.about_app.apps.AboutAppConfig"在about_app/apps.py,我们应该像这样
from django.apps import AppConfig
class AboutAppConfig(AppConfig):
name = 'gaasc_apps.about_app'
verbose_name="about application"
def ready(self):
passhttps://stackoverflow.com/questions/59124414
复制相似问题