にモデルフィールドを生成するための追加の要求paramが、私はDjnago残りのフレームワーク3に新しく、これを達成する方法を理解することはできませんよ。使用DRF 3
class Interface(models.Model):
name = models.CharField(max_length=25)
current_location = models.CharField(max_length=25, blank=True)
、リクエストで:
私はモデルを次のようしていますparam、私は緯度、経度、緯度、経度からgeohashを生成する緯度、経度フィールドを期待しています現在の場所。
私は次のシリアライザおよびビューセットを使用してみましたが、それは誤りにでもserializers.Serializer代わりのserializers.ModelSerializerを使用して
'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
を与えているが、同じエラーになります。
ここで何が間違っていますか?
与えられたモデルと要件のシリアライザを構成するには?
私はこのメソッドを作成しようとしましたが、同じエラー、つまり 'Interface'オブジェクトに属性 'latitude'がありません。閲覧可能なAPIで –
@ r.bhardwajあなたは私のように書きましたか?多分あなたはあなたのコード 'Interface.objects.create(** validated_data)'の中にこういうものを書きますので、エラーが出ます。私のコードを試しましたか?それは動作するはずです –
はいコードを試しましたが、コードをデバッグしたのと同じエラーが発生しています。エラーは、メソッドを作成する前に来ています。以下はエラーの詳細です:AttributeError:シリアライザのInterfaceSerializerでフィールドの緯度の値を取得しようとすると、AttributeErrorが返されます。シリアライザフィールドの名前が間違っていて、Interfaceインスタンスの属性またはキーと一致しない可能性があります。元の例外テキストは、 'Interface'オブジェクトに属性 'latitude'がありませんでした。 FYIはこのシリアライザをqueryset = Interface.objects.all()を持つビューセットに適用しました –