2015-12-21 16 views
6

シリアル化された形式で製品のすべてのイメージを取得します。私のモデルは以下の通りです。Django Rest Frameworkの関連モデルの値を取得しますか?

class Product(): 
    title 
    subtitle 
    ... 
class ProductImage(): 
    product = models.ForeignKey(
    'Product', related_name='images', verbose_name=_("Product")) 
    image_path 

マイシリアライザ:

class ProductImageSerializer(serializers.HyperlinkedModelSerializer): 
    class Meta: 
     model = ProductImage 
     fields = ('caption', 'display_order', 'original', 'product') 


class ProductSerializer(serializers.HyperlinkedModelSerializer): 

    images = ProductImageSerializer() 
    class Meta: 
     model = Product 
     fields = (
      'title', 'slug', 'short_description', 'description', 
      'sku', 'pk', 'images') 

display_order`上の `フィールドの値を取得しようとしたとき、私は、API /製品/ ガットはAttributeError /時にこのエラー

はAttributeErrorを取得していますシリアライザ `ProductImageSerializer`。 シリアライザフィールドの名前が誤っていて、 `RelatedManager`インスタンスの属性またはキーと一致しない可能性があります。 元の例外テキストは 'RelatedManager'オブジェクトに 'display_order'属性がありませんでした。

特定の製品のすべての画像を取得するにはどうすればよいですか?

答えて

1

あなたは、関連するモデルインスタンスのソースを定義し、many=Trueを設定する必要があります。

images = ProductImageSerializer(many=True, source='images.all') 
+0

まだ取得属性エラー:私は '' related_name(画像)を使用して、照会しています(productimageモデルを参照してください、私はそれを変更しました)。私のクエリ: 'images = ProductImageSerializer(many = True、source = 'product_images.all')' – Coderaemon

+0

今すぐ取得: 'fieldsオプションは、リストまたはタプルまたは" __all__ "でなければなりません。 Got str.' – Coderaemon

+0

あなたはソースを定義する必要があります。私は構文について間違っているかもしれません、たぶん '' 'source = 'images''''でなければなりません。 –

関連する問題