コードDjangoの残りの枠組みの中でネストされたシリアライザ
私はこれらのモデルがあります:
class Activity(models.Model):
is_child_friendly = models.BooleanField()
free_wifi = models.BooleanField()
parking_avilable = models.BooleanField()
class RouteOrdering(models.Model):
route_id = models.ForeignKey(Route, on_delete=models.CASCADE)
activity_id = models.ForeignKey(Activity, on_delete=models.CASCADE, related_name='tracks')
day = models.IntegerField()
order = models.IntegerField()
class Meta:
ordering = ['order']
そして、これらのシリアライザ:
class ActivitySerializer(serializers.ModelSerializer):
class Meta:
model = Activity
class RouteOrderingSerializer(serializers.ModelSerializer):
class Meta:
model = RouteOrdering
fields = ('id','day','order','route_id','activity_id','tracks')
は私がしたい問題をRouteOrderingシリアライザは、同じactivity_idを持つアクティビティも返します。このためには、ネストされたシリアライザを使うべきだと思いました。
は私が
を試してみた私はそうのようなネストされたシリアライザ追加しようとしました:
activity = ActivitySerializer(read_only=True)
をしかし、これは、エンドポイントには出力を生じませんでした。私はこれがドキュメントに示されたユースケースではないことを知っています。これはおそらくそのノイジーな働きをする理由です。あなたは、次のコードをしようとしたときにエラーが発生しました、なぜ私はよく分からない
class ActivitySerializer(serializers.ModelSerializer):
class Meta:
model = Activity
class RouteOrderingSerializer(serializers.ModelSerializer):
activity_id = ActivitySerializer()
class Meta:
model = RouteOrdering
fields = ('id','day','order','route_id','activity_id')
お手数をおかけしていただきありがとうございます。それは仕事をしなかったし、 '活動'フィールドが表示されていないビューを返しました。他のアイデア? – idik
これは非常に奇妙です。 'activity = ...'行や 'fields = ...'行を使わずに実行して、結果のjsonを投稿できますか? –
ここにjsonという結果のペーストビンがあります:http:// pastebin。com/MKz4mDKB – idik