多対一の関係とも呼ばれる変数リストは、通常、多に対して別のモデルを作成し、そのモデルで「一」に対して ForeignKey を使用することによって処理されます。
django.contribにはこのようなアプリはありませんが、使用できる外部プロジェクトがいくつかあります。たとえば、django-photologueでは、管理者で画像を表示するためのサポートさえあります。
管理サイトを「ユーザー証明」にすることはできません。信頼できるユーザーのみが使用する必要があります。これを考えると、管理サイトをまともなものにする方法は、プロパティの ModelAdmin を定義してから、写真をインライン化することです (インライン ドキュメント)。
したがって、いくつかの簡単なドラフトを提供するために、すべてが次のようになります。
# models.py
class Property(models.Model):
address = models.TextField()
...
class PropertyImage(models.Model):
property = models.ForeignKey(Property, related_name='images')
image = models.ImageField()
と:
# admin.py
class PropertyImageInline(admin.TabularInline):
model = PropertyImage
extra = 3
class PropertyAdmin(admin.ModelAdmin):
inlines = [ PropertyImageInline, ]
admin.site.register(Property, PropertyAdmin)
ForeignKey で related_name 引数を使用する理由は、クエリを読みやすくするためです。たとえば、この場合、ビューで次のようなことができます。
property = Property.objects.get(pk=1)
image_list = property.images.all()
編集: 言及するのを忘れた後、Simon Willison のスニペットOrderable inlines using drag and drop with jQuery UI を使用して、管理者にドラッグ アンド ドロップの順序付けを実装できます。