6

这是我 来自 django.db 导入模型的models.py文件

# 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)

但是,我不明白什么是StackedInlineand TabularInline,我参考了 Django 文档,但仍然不明白它到底是什么。

另外,当我启动服务器时,我在管理面板中看不到这些模型,我不明白为什么我的模型没有在我的管理页面上注册。

4

1 回答 1

9

我看到两个不同的问题:

我不明白什么是堆叠内联和表格内联

基本上,两者都允许您在与父模型相同的页面上编辑模型。换句话说,有时用户最好在编辑另一个模型的同时编辑某个模型,而不是在界面中的其他地方手动添加另一个实例。在您的特定情况下,您可以使用它来促进用户体验,方法是允许用户同时添加链接到父项目的照片,而不必在您的管理表单之间不断更改。

现在,两者之间的区别很容易理解:布局。事实上,两者在幕后的工作方式完全相同,唯一的区别是用于渲染的模板。可以在源代码中看到here 。因此,为您的项目选择一个只是关于界面布局的偏好问题

我在管理面板中看不到这些模型

这可能是很多事情,但通常是因为您忘记使用makemigrationsand运行迁移migrate。如果你这样做了,很多用户忘记的另一件事是安装他们的应用程序。所以,在

设置.py

INSTALLED_APPS = ['Myproject.apps.Myapp']
于 2017-11-13T14:03:56.907 回答