首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从django rest框架中的相关字段中提取数据

从django rest框架中的相关字段中提取数据
EN

Stack Overflow用户
提问于 2019-11-12 09:41:57
回答 2查看 303关注 0票数 0

我试图使用PrimaryKey从django rest框架中的外键相关字段中提取数据。

Views.py

类DispatchervsLrAPIView(CreateAPIView):

代码语言:javascript
运行
复制
def get(self, request):

    date_to = request.data['date_to']
    date_from = request.data['date_from']
    company_id = request.data['c_name']

    company_emp = Teacher.objects.filter(company_id=company_id).values_list('user_id', flat=True)

    d = LR.objects.filter(Q(created_on__range=[date_to, date_from]) | Q(lr_quiz_id__owner_id__in=list(company_emp)))
    print(" d is ", d)
    serializer = DispvsLRSerializer(d, many=True)

    return Response(serializer.data, status=status.HTTP_201_CREATED)

Serializers.py

代码语言:javascript
运行
复制
class DispvsLRSerializer(serializers.ModelSerializer):
    lr_quiz = serializers.PrimaryKeyRelatedField
    class Meta:
        model = LR
        fields = "__all__"

但“邮递员”给我的输出是:

代码语言:javascript
运行
复制
[
    {
        "id": 1,
        "lr_no": 0,
        "lr_date": "2019-11-10T12:45:33.478763",
        "lr_billingparty": "0",
        "invoice_no": 0,
        "lr_declared": 0,
        "ewaybill_no": 0,
        "lr_quantity": 0,
        "lr_weight": 0,
        "lr_invoice_date": "2019-11-10T12:45:33.478763",
        "lr_item_name": "0",
        "lr_consignor_name": "0",
        "lr_consignor_address": "0",
        "lr_consignor_contact_name": "0",
        "lr_consignor_contact_phone": "0",
        "lr_consignee_name": "0",
        "lr_consignee_address": "0",
        "lr_consignee_contact_name": "0",
        "lr_consignee_contact_phone": "0",
        "vehicle_no": "0",
        "lr_vehicle_type": 0,
        "driver_name": "0",
        "driver_no": "0",
        "created_on": "2019-11-10T00:00:00",
        "lr_quiz": 1,
        "lr_owner": 2
    }
]

如何扩展"lr_quiz"?其中lr_quiz是与外键相关的字段

Models.py

代码语言:javascript
运行
复制
class LR(models.Model):
    lr_quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE, related_name='quiz_lr')
    lr_owner = models.ForeignKey(Supplier, on_delete=models.CASCADE, related_name='lr_owner')

    lr_no = models.IntegerField(default=0)
    lr_date = models.DateTimeField(max_length=255, default=now)
    lr_billingparty = models.CharField(max_length=255, default=0)  
    (shortened for easy readibility)

class Quiz(models.Model):

    comments = models.TextField(max_length=256, blank=True)
    origin = models.CharField(max_length=255, default=0)
    destination = models.CharField(max_length=255, default=0)
    total_trucks = models.IntegerField(default=0)

我想要LR和它的相关测试的数据

EN

回答 2

Stack Overflow用户

发布于 2019-11-12 09:48:46

您可以使用嵌套关系来表示多个关系。

代码语言:javascript
运行
复制
class LZQUIZSerializer(serializers.ModelSerializer):
    class Meta:
        model = LZ_QUIZ_MODEL_HERE
        fields = "__all__"

class DispvsLRSerializer(serializers.ModelSerializer):
    tracks = LZQUIZSerializer(many=True, read_only=True)

    class Meta:
        model = LR
        fields = "__all__"
票数 0
EN

Stack Overflow用户

发布于 2019-11-12 10:33:26

代码语言:javascript
运行
复制
class DispvsLRSerializer(serializers.ModelSerializer):
    fk_field = serializers.Charfield(source='fk.field', read_only=True)
    class Meta:
        model = LR
        fields = [.....,
                  .....,
                 'fk_field']

你可以用这种方式把你的“外键”字段关联起来

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58815860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档