23

djangoの複数のファイルまたは複数の画像を処理できるモデルフィールドはありますか? それとも、画像またはファイルを含む別のモデルに ManyToManyField を作成する方がよいでしょうか?

django-admin のアップロード インターフェイスを備えたソリューションが必要です。

4

4 に答える 4

7

いいえ、Djangoに同梱されている複数の画像を保存する方法を知っている単一のフィールドはありません。アップロードされたファイルはモデルにファイルパス文字列として保存されるため、CharFieldPythonに変換する方法を知っているのは基本的にです。

一般的な複数の画像の関係は、FKがに関連するモデルを指す個別の画像モデルとして構築されProductImage -> Productます。

この設定により、djangoadminにとして非常に簡単に追加できInlineます。

GalleryImagesM2Mフィールドは、たとえば1つ以上のGalleryオブジェクトから参照されている、本当に多対多の関係である場合に意味があります。

于 2012-07-17T19:25:26.503 に答える
5

既存のシステムで単一のファイルから複数のファイルに変更する必要があり、少し調査した後、これを使用することになりました: https://github.com/bartTC/django-attachments

カスタム メソッドが必要な場合は、モデルを簡単にサブクラス化できます。

于 2012-07-17T19:37:08.963 に答える
2

FilerFileField と FilerImageField を 1 つのモデルに:

これらは django.db.models.ForeignKey のサブクラスであるため、同じ規則が適用されます。唯一の違いは、参照しているモデルを宣言する必要がないことです (FilerFileField の場合は常に filer.models.File であり、FilerImageField の場合は filer.models.Image です)。

models.py の簡単な例:

from django.db import models
from filer.fields.image import FilerImageField
from filer.fields.file import FilerFileField

class Company(models.Model):
    name = models.CharField(max_length=255)
    logo = FilerImageField(null=True, blank=True)
    disclaimer = FilerFileField(null=True, blank=True)

models.py の同じモデルの複数の画像ファイル フィールド:

注: related_name 属性が必要です。これは、外部キー関係を定義するのと同じです。

from django.db import models
from filer.fields.image import FilerImageField

class Book(models.Model):
    title = models.CharField(max_length=255)
    cover = FilerImageField(related_name="book_covers")
    back = FilerImageField(related_name="book_backs")

django-filer ドキュメントから取得したこの回答コード

于 2014-08-27T06:35:08.943 に答える