Stacked inline 和 Tabular inline 的区别
Posted
技术标签:
【中文标题】Stacked inline 和 Tabular inline 的区别【英文标题】:Differences between Stacked inline and Tabular inline 【发布时间】:2018-04-25 18:41:22 【问题描述】:这是我的models.py
文件
从 django.db 导入模型
# Create your models here.
class Item(models.Model):
name=models.CharField(max_length=250)
description = model.TextField()
class Meta:
oredering['name']
def __unicode__(self):
return self.name
@permalink
def get_absolute_url:
retun ('item_detail',None,'object_id':self_id)
class Photo(models.Model):
item = models.ForiegnKey(Item)
title=models.ChaField(max_length=250)
image=models.IMageField(upload_to='photos')
caption=models.TextField(blank=True)
class Meta:
ordering=['title']
def __unicode__(self):
return self.title
@permalink
def get_absolute_url(self):
retun ('photo_detail',None,'object_id':self_id)
这是我的admin.py
:
from django.contrib import admin
from models import Item
from models import Photo
# Register your models here.
class PhotoInline(admin.StackedInline):
model = Photo
class ItemAdmin(admin.ModelAdmin):
inlines = [PhotoInline]
admin.site.register(Item, ItemAdmin)
admin.site.register(Photo)
但是,我无法理解 StackedInline
和 TabularInline
是什么,我参考了 Django 文档但仍然无法理解它到底是什么。
另外,当我启动服务器时,我在管理面板中看不到这些模型,我不明白为什么我的模型没有在我的管理页面上注册。
【问题讨论】:
【参考方案1】:我看到两个不同的问题:
我不明白什么是堆叠内联和表格内联
基本上,两者都允许您在与父模型相同的页面上编辑模型。换句话说,有时用户最好在编辑另一个模型的同时编辑某个模型,而不是在界面中的其他地方手动添加另一个实例。在您的特定情况下,您可以使用它来促进用户体验,方法是允许用户同时添加链接到父项目的照片,而不必在您的管理表单之间不断更改。
现在,两者的区别很容易理解:布局。事实上,两者在幕后的工作方式完全相同,唯一的区别是用于渲染的模板。在源码中可以看到here。因此,为您的项目选择一个只是关于界面布局的偏好问题
我在管理面板中看不到这些模型
这可能是很多事情,但通常是因为您忘记使用 makemigrations
和 migrate
运行迁移。如果你这样做了,很多用户忘记的另一件事是安装他们的应用程序。所以,在
Setting.py
INSTALLED_APPS = ['Myproject.apps.Myapp']
【讨论】:
问题是我没有将它添加到我的 settings.py./installed_apps 并再次感谢您详细解释我以上是关于Stacked inline 和 Tabular inline 的区别的主要内容,如果未能解决你的问题,请参考以下文章
Create Stacked Canvas to Scroll Horizontal Tabular Data Blocks In Oracle Forms