Различия между встроенным и табличным
Это мое 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, но все еще не мог понять, что именно.
Кроме того, я не вижу этих моделей в своей панели администратора при запуске сервера, я не понимаю, почему мои модели не зарегистрированы на моей странице администратора.
2 ответа
Я вижу две разные проблемы:
Я не могу понять, что укладывается в строку и табличную строку
По сути, оба позволяют редактировать модели на той же странице, что и родительская модель. Другими словами, иногда для пользователя предпочтительнее иметь возможность редактировать определенную модель при редактировании другой, а не добавлять вручную другой экземпляр где-то еще в вашем интерфейсе. В вашем конкретном случае вы можете использовать его для облегчения взаимодействия с пользователем, позволяя пользователю одновременно добавлять фотографии, связанные с родительским элементом, без необходимости постоянно переключаться между формами администратора.
Теперь разница между ними очень проста: макет. На самом деле, оба работают точно так же за кулисами, единственное отличие - шаблон, используемый для рендеринга. Это можно увидеть здесь в исходном коде. Таким образом, выбор одного для вашего проекта является лишь вопросом предпочтений в отношении макета интерфейса
Я не могу видеть эти модели в моей панели администратора
Это может быть много вещей, но часто это потому, что вы забыли запустить миграцию с makemigrations
а также migrate
, В противном случае многие пользователи забывают установить приложение. Итак, в
Setting.py
INSTALLED_APPS = ['Myproject.apps.Myapp']