ユーザーが管理インターフェイスを介して写真をアップロードし、API エンドポイントを介してそれらの画像の URL にアクセスできるようにする Django アプリを作成しています。管理インターフェイスで、ユーザーに Filepicker.io ウィジェットを表示し (ドラッグ アンド ドロップ機能などを有効にするため)、ファイルを S3 にアップロードする必要があります。アカウントの Filpicker 管理ページに S3 資格情報を既に入力しています。
私の質問は、これらすべての要素をどのようにまとめるかです。ここに私のプロジェクトからの適切なファイル:
# models.py
from django.db import models
from django_filepicker.models import FPFileField
# Add field introspection for FPFileField
# See http://south.aeracode.org/wiki/MyFieldsDontWork
from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^django_filepicker\.models\.FPFileField"])
class Product(models.Model):
product_logo = FPFileField(upload_to='uploads')
# forms.py
from django import forms
from django_filepicker.forms import FPFileField
from django_filepicker.widgets import FPFileWidget
from example.models import Product
class ProductForm(forms.ModelForm):
class Meta:
model = Product
def __init__(self, *args, **kwargs):
self.fields['product_logo'] = FPFileField(widget = FPFileWidget)
super(ProductForm, self).__init__(*args, **kwargs)
# views.py
from django.http import HttpResponse
from example.models import Product
import json
def example_view():
result = []
products = Product.objects.all()
for product in products:
# I want the S3 URL here!
result.append(product.product_logo.url)
return HttpResponse(json.dumps(result, indent=2))
私の問題は次のとおりです。
- Django 管理インターフェイスには通常の Django FileField ウィジェットが表示されますが、代わりに FPFileWidget が必要です
- 画像ファイルを S3 にアップロードしたい (自分のサイトの /media ディレクトリではなく)
- /media/xxxx URL ではなく、S3 URL を取得したいと考えています。
たとえば、現在の一般的な応答は次のとおりです。
[
"/media/uploads/fp-file",
"/media/uploads/fp-file_1",
"/media/uploads/fp-file_2",
"/media/uploads/fp-file_3",
"/media/uploads/fp-file_4",
"/media/uploads/fp-file_5"
]
しかし、私は次のようなものが欲しい:
[
"https://s3-ap-southeast-2.amazonaws.com/XXXXXXXXX/TBtOcRSNyBAZZuNBFOpA_blah.png",
"https://s3-ap-southeast-2.amazonaws.com/XXXXXXXXX/8ODleDuKRIOAglFs0sKl_etc.png",
]