Различия между встроенным и табличным

Это мое 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 ответа

The TabularInlineотображает данные в таблице

НоStackedInlineотображается в строке

Я вижу две разные проблемы:

Я не могу понять, что укладывается в строку и табличную строку

По сути, оба позволяют редактировать модели на той же странице, что и родительская модель. Другими словами, иногда для пользователя предпочтительнее иметь возможность редактировать определенную модель при редактировании другой, а не добавлять вручную другой экземпляр где-то еще в вашем интерфейсе. В вашем конкретном случае вы можете использовать его для облегчения взаимодействия с пользователем, позволяя пользователю одновременно добавлять фотографии, связанные с родительским элементом, без необходимости постоянно переключаться между формами администратора.

Теперь разница между ними очень проста: макет. На самом деле, оба работают точно так же за кулисами, единственное отличие - шаблон, используемый для рендеринга. Это можно увидеть здесь в исходном коде. Таким образом, выбор одного для вашего проекта является лишь вопросом предпочтений в отношении макета интерфейса

Я не могу видеть эти модели в моей панели администратора

Это может быть много вещей, но часто это потому, что вы забыли запустить миграцию с makemigrations а также migrate, В противном случае многие пользователи забывают установить приложение. Итак, в

Setting.py

INSTALLED_APPS = ['Myproject.apps.Myapp']
Другие вопросы по тегам