私は複数の django サイトに取り組んでおり、プロジェクトをクライアントに見栄えよくすることが制限されています。
たとえば、同じアプリに 2 つのモデルの画像と画像ギャラリーがあります。ギャラリーの管理者エントリと、その中に画像のテーブルがあるだけで、とてもいいでしょう。
私は複数の django サイトに取り組んでおり、プロジェクトをクライアントに見栄えよくすることが制限されています。
たとえば、同じアプリに 2 つのモデルの画像と画像ギャラリーがあります。ギャラリーの管理者エントリと、その中に画像のテーブルがあるだけで、とてもいいでしょう。
まさにそのInlineModelAdmin
ためです。このようなmodels.pyを取った:
class Gallery(models.Model):
name = models.CharField(max_length=100)
class Image(models.Model):
image = models.ImageField()
gallery = models.ForeignKey(Gallery)
次のような admin.py を作成し、ギャラリーの管理クラスのみを登録します。
class ImageInline(admin.TabularInline):
model = Image
class GalleryAdmin(admin.ModelAdmin):
inlines = [ImageInline]
admin.site.register(Gallery, GalleryAdmin)
これはDirkの助けのおかげで私の解決策です。
from django.db import models
PHOTO_PATH = 'media_gallery'
class Gallerys(models.Model):
title = models.CharField(max_length=30, help_text='Title of the image maximum 30 characters.')
slug = models.SlugField(unique_for_date='date', help_text='This is automatic, used in the URL.')
date = models.DateTimeField()
class Meta:
verbose_name_plural = "Image Galleries"
ordering = ('-date',)
def __unicode__(self):
return self.title
class Images(models.Model):
title = models.CharField(max_length=30, help_text='Title of the image maximum 30 characters.')
content = models.FileField(upload_to=PHOTO_PATH,blank=False, help_text='Ensure the image size is small and it\'s aspect ratio is 16:9.')
gallery = models.ForeignKey(Gallerys)
date = models.DateTimeField()
class Meta:
verbose_name_plural = "Images"
ordering = ('-date',)
def __unicode__(self):
return self.title
import models
from django.contrib import admin
class ImageInline(admin.TabularInline):
model = Images
class GallerysAdmin(admin.ModelAdmin):
list_display = ('title', 'date', 'slug')
inlines = [ImageInline]
admin.site.register(models.Gallerys,GallerysAdmin)