2016-09-03 5 views
2

Struggling zu Feldnamen in Serializer Klasse erhalten erhalten:django Rest Framework kann nicht Feldnamen

from myapp.models import Image 
class ImageSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Image 
     fields = ('image__image__url',) 

mein Modell:

class Image(models.Model): 
    name = models.CharField(max_length=128, null=True, blank=True) 
    image = FilerImageField() 

Im Browser erhalte ich Fehler: Feldname image__image__url ist nicht gültig für Modell Image.

Obwohl, wenn ich versuche, in der Schale:

>>> from myapp.models import Image 
>>> img = Image.objects.get(pk=1) 
>>> img.image.url 
'/media/filer_public/37/05/37054d47-2e23-4d05-80b5-a3183f10ea38/screenshot_from_2016-03-24_115543.png' 

Was könnte das Problem sein?

+0

Das würde mein Problem lösen, aber warum meine derzeitige Vorgehensweise nicht funktioniert? – Mazas

+0

Sie sollten "Bild" nicht zweimal benötigen. Es sollte nur '('image__url',)' – jape

+0

Versucht dies, noch immer gleichen Fehler: Feldname image_url ist nicht gültig für Modell Image. – Mazas

Antwort

2

Sie benötigen keine Feldsuche, verwenden Sie nur Feldname, es wird url Methode in Ihrer Antwort standardmäßig angezeigt.

class ImageSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Image 
     fields = ('image',) 
+0

Nun, es wird nicht angezeigt. Wenn ich 'fields = ('image',)' setze, bekomme ich die Antwort: {"image": 1} – Mazas

+0

@Mazas Ich weiß nicht, was 'FilerImageField' ist, aber ob es von standart' ImageField erbt ', sollte es' url'-Methode standardmäßig zurückgeben, sowieso können Sie es manuell nennen. Erklären Sie einfach dieses Feld im Serializer 'image = serializers.ReadOnlyField (source = 'image.url')' –

Verwandte Themen