【问题标题】:django rest framework view does'nt show related table datadjango rest框架视图不显示相关表数据
【发布时间】:2015-01-04 07:55:36
【问题描述】:

models.py

class MEMBER(models.Model):
    LB_NAME = models.CharField(max_length=40,null=True)
    LB_FIRST_NAME = models.CharField(max_length=40,null=True)
    DT_DAT_BIRTH = models.DateField(,null=True)
    CO_ID = models.CharField(max_length=6,null=True)

class MEMBER_DECLARE_RECEPT(models.Model):
    SY_MEMBER=models.ForeignKey(MEMBER,verbose_name='Name member ',null=True,related_name='Member')
    DT_DECLARATION_RECEPT=models.DateField(('Date received',null=True)

序列化器.py

class MemberSerializer(serializers.ModelSerializer):
    class Meta:
        model = MEMBER
        fields=('id','LB_NAME','LB_FIRST_NAME','CO_ID')


class MemberDeclareSerializer(serializers.ModelSerializer):
    class Meta:
        model = MEMBER_DECLARE_RECEPT
        fields=('id','SY_MEMBRE','DT_DECLARATION_RECEPT','FL_RECEPT_RECEPT_DEFAUT')

views.py

class MemberDeclareDetail(generics.ListCreateAPIView):
    queryset=MEMBER_DECLARE_RECEPT.objects.all()
    serializer_class =MemberDeclareSerializer
    def get_object(self,pk):
        try:
            return self.queryset.get(pk=pk)
        except MEMBER_DECLARE_RECEPT.DoesNotExist:
            raise Http404

    def get(self, request, pk,format=None):
        entries = self.get_object(pk)
        serializer = MemberDeclareSerializer(entries)
        return Response(serializer.data)

结果:

{
    "id": 1, 
    "SY_MEMBER": 1, 
    "DT_DECLARATION_RECEPT": "2014-12-31", 
    "FL_RECEPT_RECEPT_DEFAUT": "1"
}

但不是相关的表格数据!

我错过了什么?

【问题讨论】:

  • 结果是什么?你是什​​么意思,“相关的表数据”?

标签: django rest frameworks


【解决方案1】:

你需要Serializer relations

class MemberDeclareSerializer(serializers.ModelSerializer):
    ...
    members = serializers.StringRelatedField(many=True)
    ...

另外,请尝试遵循 python 命名约定

class MemberDeclareRecept(models.Model):
    member=models.ForeignKey(Member,verbose_name='Name member ',null=True,related_name='members')

【讨论】:

  • 非常好!谢谢,Histrio。我不得不用 read_only=True 替换 many=True 否则我有一个 TypeError : 'MEMBER' object is not iterable。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 2014-05-03
  • 1970-01-01
相关资源
最近更新 更多