Ich bin neu in Djnago Ruherahmen 3 und nicht in der Lage zu verstehen, zu erzeugen, wie dies zu erreichen:
Ich habe folgendes Modell:Verwenden zusätzliche Anforderung param ein Modellfeld in DRF 3
class Interface(models.Model):
name = models.CharField(max_length=25)
current_location = models.CharField(max_length=25, blank=True)
Und Anfrage Ich erwarte Breitengrad, Längengrad-Feld, das die geohash von Breite, Länge und speichern in current_location.
habe ich versucht, folgende Serializer und Viewset verwenden, aber es Fehler geben
'Interface' object has no attribute 'latitude'.
class InterfaceSerializer(serializers.ModelSerializer):
latitude = serializers.FloatField()
longitude = serializers.FloatField()
class Meta:
model = Interface
fields = ('id', 'name', 'latitude', 'longitude',)
read_only_fields = ('id',)
class InterfaceViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows interface to be viewed or edited.
"""
queryset = Interface.objects.all()
serializer_class = InterfaceSerializer
Auch die serializers.Serializer anstelle von serializers.ModelSerializer gleichen Fehler gibt.
Was ist hier falsch?
Wie wird der Serializer für ein bestimmtes Modell und eine bestimmte Anforderung strukturiert?
Ich habe dies in Create-Methode versucht, aber es gibt denselben Fehler, d. H. 'Schnittstelle' Objekt hat kein Attribut 'Breite'. in der durchsuchbaren API. –
@ r.bhardwaj hast du es wie ich geschrieben? vielleicht schreibst du so etwas in deinem Code 'Interface.objects.create (** valided_data)', damit du einen Fehler bekommst. Hast du meinen Code ausprobiert? Es sollte funktionieren –
ja Ich habe Ihren Code versucht, aber es gibt denselben Fehler, wie ich den Code debugged. Der Fehler tritt vor der Methode create auf. Hier sind Details des Fehlers: AttributeError: Erhalte AttributeError, wenn er versucht, einen Wert für die Feldbreite auf dem Serializer InterfaceSerializer zu erhalten. Das Serializer-Feld wird möglicherweise falsch benannt und entspricht keinem Attribut oder Schlüssel der Interface-Instanz. Ursprünglicher Ausnahmetext war: Das Objekt 'Schnittstelle' hat kein Attribut 'Breite'. FYI habe diesen Serializer auf ein Viewset angewendet, das queryset = Interface.objects.all() –