繁体   English   中英

如何在Django Rest Framwork中获得具有父模型的Forein键的子模型?

[英]How to get child model having foregin key of parent model in Django rest framwork?

现在我想要输出这样一种方式,对于每个列表我都必须获得完整的时序记录,如何在下面实现它是我的模型

model.py
class Refreshment(models.Model):
     title = models.CharField(max_length=200, unique=True)
     charges = models.DecimalField(max_digits=12, decimal_places=2, help_text="Charges per hour")





class Timeing(models.Model):
    refreshment = models.OneToOneField(Refreshment,on_delete=models.CASCADE)
     sunday_open = models.TimeField(blank=True, editable=True)

以下是我的views.py

@api_view()
def all_games_sports(request):
  entertainment = Refreshment.objects.filter(type=1)
  serialize = EntertainmentSerializer(instance=entertainment, many=True)
  main = {'status': True, 'code': "CODE_SUCCESSFUL", 'msg': "SUCCESS", 'all_games_sports': serialize.data}
  return Response(main)

Serializer.py

class TimeingSerializer(serializers.ModelSerializer):
   class Meta:
      model = Timeing
      fields = '__all__'

class EntertainmentSerializer(serializers.ModelSerializer):
      refreshment =   TimeingSerializer(many=True,read_only=True)

  class Meta:
      model = Refreshment
      fields = '__all__'

AttributeError: Got AttributeError when attempting to get a value for    field `refreshment` on serializer `AvailableHourSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `Refreshment` instance.
Original exception text was: 'Refreshment' object has no attribute 'refreshment'.

您的代码将引发错误。 这应该。 您定义了refreshment ,但没有将其添加到字段中。

class EntertainmentSerializer(serializers.ModelSerializer):
      refreshment =  TimeingSerializer(many=True,read_only=True)

      class Meta:
          model = Refreshment
          fields = '__all__' #You have not added refreshment to fields.

您应该这样做:

class EntertainmentSerializer(serializers.ModelSerializer):
      timeing =   TimeingSerializer(many=True,read_only=True)

      class Meta:
          model = Refreshment
          fields = '__all__'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM