72

Django で簡単な不動産リスト アプリを作成しています。各プロパティには、可変数の画像が必要です。画像には編集可能な順序が必要です。そして、管理者をユーザーに証明する必要があります。

そうは言っても、私のオプションは何ですか?

  1. 私が知らない ImageList フィールドはありますか?

  2. django.contrib.comments私のために仕事をするようなアプリはありますか?

  3. 自分で書かなければならない場合、管理者側を適切にするにはどうすればよいですか? 私は ImageField が提供するものよりもはるかに洗練されたものを想像しています。しかし、私は管理ページを書くのが完全に不器用です =(

4

4 に答える 4

141
  1. 多対一の関係とも呼ばれる変数リストは、通常、多に対して別のモデルを作成し、そのモデルで「一」に対して ForeignKey を使用することによって処理されます。

  2. django.contribにはこのようなアプリはありませんが、使用できる外部プロジェクトがいくつかあります。たとえば、django-photologueでは、管理者で画像を表示するためのサポートさえあります。

  3. 管理サイトを「ユーザー証明」にすることはできません。信頼できるユーザーのみが使用する必要があります。これを考えると、管理サイトをまともなものにする方法は、プロパティの 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 を使用して、管理者にドラッグ アンド ドロップの順序付けを実装できます。

于 2009-02-11T17:52:25.107 に答える
7

プロパティモデルにForeignKeyを持つImageモデルを記述します。おそらく、プロパティではなく画像に属する他のフィールドがいくつかあるでしょう。

于 2009-02-11T16:57:54.957 に答える
4

私は現在同じことをしていますが、同じ問題に直面しました。

しばらく調べた後、django-imagingを使用することにしました。素晴らしいAjax機能があり、モデルの挿入ページと同じページに画像をアップロードでき、編集可能です。唯一欠けているのは、非 JPEG 拡張子のサポートです。数日で回避策が得られることを願っています。:)

于 2009-06-24T19:51:16.417 に答える