2015-12-21 7 views
6

Voglio ottenere tutte le immagini di un prodotto nella forma serializzata. I miei modelli sono come di seguitoOttieni i valori di un modello correlato in Django Rest Framework?

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

miei serializzatori:

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') 

sto ottenendo questo errore

AttributeError a/API/prodotti/ Got AttributeError quando si cerca di ottenere un valore per il campo `display_order` su serializzatore `ProductImageSerializer`. Il campo serializzatore potrebbe essere denominato in modo errato e non corrispondere a nessun attributo o chiave nell'istanza `RelatedManager`. Il testo originale dell'eccezione era: l'oggetto 'RelatedManager' non ha attributo 'display_order'.

Come ottengo tutte le immagini per un prodotto particolare?

risposta

1

è necessario definire una fonte di istanze modello correlate e impostare many=True:

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

errore Attributo ancora ottenere: Sto ricerca utilizzando 'related_name (immagini)' (vedi modello productimage, ho cambiato). La mia query: 'images = ProductImageSerializer (many = True, source = 'product_images.all')' – Coderaemon

+0

Ora ottenendo: 'L'opzione fields deve essere una lista o tupla o" __all__ ". Got str' – Coderaemon

+0

Il punto è che devi definire una fonte. Potrei sbagliarmi sulla sintassi, forse dovrebbe essere solo '' 'source = 'images''''. –