2016-06-20 5 views
1

ich derzeit versuche HyperlinkedModelSerializer zu verwenden, aber ich bin immer die Fehlermeldung:Mit Django HyperlinkedModelSerializer mit dem Präfix Ansicht Namen

Could not resolve URL for hyperlinked relationship using view name "house-detail" 

das sein sollte „Backend: Haus-Detail“, alle Ansichten in meinem REST api habe dieses "Backend:" Präfix. Wie kann ich Django REST automatisch dieses Präfix hinzufügen lassen?

Antwort

1

Still not sure how to do it automatically though, so if I ever change the prefix I need to change things manually.

Dies ist, wenn Vererbung Basisklassen und

class PrefixedSerializer(serializers.HyperlinkedModelSerializer): 
    prefix = 'backend' 
    url = serializers.HyperlinkedIdentityField(
     view_name='{}:house-detail'.format(prefix) 
    ) 

So, jetzt HouseSerializer erbt von dieser Basisklasse helfen kann

class HouseSerializer(PrefixedSerializer): 
    # the other fields 
+0

Great! Es scheint, dass das Django-REST-Framework keine Möglichkeit hat, dies automatisch zu tun, aber die Verwendung von Vererbung ist hier nett. Das Ich." gibt jedoch einen variablen undefinierten Fehler, nur das Entfernen macht es funktioniert. – user1582024

+0

@ user1582024 Oh ja, ich habe mich nicht wirklich bemüht, korrekte Syntax zu geben, auch müssen Sie vielleicht den 'Haus-Detail'-Teil in eine Variable in' HouseSerializer' eingrenzen, aber ich hoffe, dass ich Ihnen geholfen habe, die Idee zu bekommen wie man das mit Basisklassen macht! – bakkal

+0

Das hast du sicherlich getan. – user1582024

0

es manuell zu tun, dies zu tun:

class HouseSerializer(serializers.HyperlinkedModelSerializer): 

    url = serializers.HyperlinkedIdentityField(
     view_name='backend:house-detail' 
    ) 

    ... 

Immer noch nicht sicher, wie es automatisch obwohl tun, also wenn ich jemals das Präfix ich Dinge muß manuell ändern ändern.

Verwandte Themen