Django Admin中的嵌套内联
我遇到了一个情况,想在Django的后台管理界面中显示三个模型,并且希望它们是嵌套在一起的。我使用的是Django 1.6版本,并按照这个链接中的设置进行了配置:https://github.com/Soaa-/django-nested-inlines
但是,结果并没有达到我的预期。请问有没有其他方法可以在Django中实现嵌套的内联功能?我对这个框架还是个新手,希望能得到一些指导来解决这个问题。
model.py
class Project(models.Model):
name = models.CharField(max_length=200)
code = models.IntegerField(default=0)
def __unicode__(self):
return self.name
class Detail(models.Model):
project = models.ForeignKey(Project)
value = models.DecimalField(max_digits=5, decimal_places=2)
location = models.IntegerField(default=0)
class Configuration(models.Model):
detail = models.OneToOneField(Detail)
content1 = models.IntegerField()
content2 = models.IntegerField()
admin.py
from django.contrib import admin
from nested_inlines.admin import NestedModelAdmin, NestedTabularInline, NestedStackedInline
from myapp.models import Project, Detail, Configuration
class ConfigInline(NestedStackedInline):
model = Configuration
extra = 1
class DetailInline(NestedTabularInline):
model = Detail
inlines = [ConfigInline,]
extra = 1
class ProjectAdmin(admin.ModelAdmin):
inlines = [DetailInline]
admin.site.register(Project, ProjectAdmin)
3 个回答
0
在你导入下面这个包之前,先安装它。
使用命令 pip install django-nested-admin,然后把它添加到已安装应用的列表里。
INSTALLED_APPS = [
...
'nested_admin',
...
]
现在,你可以导入它了。
from nested_inline.admin import NestedModelAdmin, NestedTabularInline, NestedStackedInline
1
我觉得你忘了把ProjectAdmin设置为一个NestedModelAdmin
了:
admin.py :
from django.contrib import admin
from nested_inlines.admin import NestedModelAdmin, NestedTabularInline, NestedStackedInline
from myapp.models import Project, Detail, Configuration
class ConfigInline(NestedStackedInline):
model = Configuration
extra = 1
class DetailInline(NestedTabularInline):
model = Detail
inlines = [ConfigInline,]
extra = 1
class ProjectAdmin(NestedModelAdmin):
inlines = [DetailInline]
admin.site.register(Project, ProjectAdmin)
1
可以试试这个链接:https://pypi.python.org/pypi/django-nested-inline。
这个工具已经更新,可以和Django 1.6一起使用了。