djangoの複数のファイルまたは複数の画像を処理できるモデルフィールドはありますか? それとも、画像またはファイルを含む別のモデルに ManyToManyField を作成する方がよいでしょうか?
django-admin のアップロード インターフェイスを備えたソリューションが必要です。
djangoの複数のファイルまたは複数の画像を処理できるモデルフィールドはありますか? それとも、画像またはファイルを含む別のモデルに ManyToManyField を作成する方がよいでしょうか?
django-admin のアップロード インターフェイスを備えたソリューションが必要です。
いいえ、Djangoに同梱されている複数の画像を保存する方法を知っている単一のフィールドはありません。アップロードされたファイルはモデルにファイルパス文字列として保存されるため、CharField
Pythonに変換する方法を知っているのは基本的にです。
一般的な複数の画像の関係は、FKがに関連するモデルを指す個別の画像モデルとして構築されProductImage -> Product
ます。
この設定により、djangoadminにとして非常に簡単に追加できInline
ます。
GalleryImages
M2Mフィールドは、たとえば1つ以上のGallery
オブジェクトから参照されている、本当に多対多の関係である場合に意味があります。
既存のシステムで単一のファイルから複数のファイルに変更する必要があり、少し調査した後、これを使用することになりました: https://github.com/bartTC/django-attachments
カスタム メソッドが必要な場合は、モデルを簡単にサブクラス化できます。
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 ドキュメントから取得したこの回答コード