DjangoはFile objects、StoragesおよびFileFieldで動作します。 Filefieldはファイルのためのある種のストレージ識別子を保存します。この識別子は、ストレージがファイルの正しい場所を見つけるのに役立ちます。デフォルトでは、シリアライザはその識別子のみを取得します。その識別子はdjangoファイルオブジェクトの文字列表現です。私はすでにこのラインの上で考えていた
from django.core import serializers
from django.db import models
JSONSerializer = serializers.get_serializer("json")
JSONWithURLSerializer(JSONSerializer):
def handle_field(self, obj, field):
value = field.value_from_object(obj)
if isinstance(field, models.FileField) and hasattr('url', value):
self._current[field.name] = value.url
else:
return super(JSONWithURLSerializer, self).handle_field(obj, field)
serializer = JSONWithURLSerializer()
serializer.serialize(queryset)
data = serializer.getvalue()
:URLを返すようにしたい場合は
は、あなたは、シリアライザメソッドをオーバーライドする必要があります。答えをありがとう。 – r3ign
djangoはこれをそのままの状態でサポートしていないのですか?私は、デフォルトでは、すべてのファイルが自動的にMEDIA_ROOT + Rel.PATHを指すはずであると感じています。 – r3ign