0

「プロジェクト」モデルがあります。各プロジェクトには「ギャラリー」があり、各ギャラリーには「写真」があります。

class Project:
 gallery = ForeignKey(Gallery)

class Gallery:
 photos = ManyToManyField(Photo)

class Photo:
 image = ImageField(...)

ユーザーがギャラリーとプロジェクトを同じページで編集できるようにしたいと考えています。これを実現するために必要なコンポーネントを教えてください。アップロードされた画像などでフォームを処理するときに、どのタイプのフォームを使用する必要があり、どのテクニックを使用する必要がありますか?

考慮すべきことは、ユーザーが編集している写真を html img-tag と file-tag で表示して、写真を置き換えることができるようにすることです。単なる複数選択リストである django のデフォルトの m2m-widget は必要ありません。

私にはできないので、これを理解するのを手伝ってくれませんか。ここで3日間立ち往生しています:)

4

2 に答える 2

0

Project を admin.TabularInline として使用して、Gallery Admin フォームを変更できます。

このような:

admin.py

# -*- encoding: utf-8 -*-
from models import Project, Gallery, Photo
from django.contrib import admin

class ProjectInline(admin.TabularInline)
    model = Project

class GalleryAdmin(admin.ModelAdmin):
    inlines = [ProjectInline]

admin.site.register(Gallery, GalleryAdmin)
于 2011-01-20T14:13:42.943 に答える
0

組み込みの管理モジュールを使いたくありませんでした。ただし、django のフォームセット ファクトリを使用しました。フォームセット (つまり、ギャラリー内の写真) にクエリセットを提供できます。次に、小さなカスタマイズされたモデル フォームセット クラスを提供する必要がありました。その後、ビューをギャラリーなどに正しくリンクするために、フォームを手動で処理する必要がありました。

于 2011-02-03T20:10:34.877 に答える