Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从django rest框架中的相关字段提取数据_Python_Django - Fatal编程技术网

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

Python 从django rest框架中的相关字段提取数据,python,django,Python,Django,我试图使用PrimaryKey从django rest框架中与外键相关的字段中提取数据 Views.py 类DispatchervsLrAPIView(CreateAPIView): 序列化程序.py class DispvsLRSerializer(serializers.ModelSerializer): lr_quiz = serializers.PrimaryKeyRelatedField class Meta: model = LR fi

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

Views.py

类DispatchervsLrAPIView(CreateAPIView):

序列化程序.py

class DispvsLRSerializer(serializers.ModelSerializer):
    lr_quiz = serializers.PrimaryKeyRelatedField
    class Meta:
        model = LR
        fields = "__all__"
但我在《邮递员》中得到的结果是:

[
    {
        "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_测验”?其中lr_测验是外键相关字段

Models.py

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及其相关测验的数据

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

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__"

您可以用这种方式关联您的foreignkey字段

我尝试过这种方法,但它不起作用,我是否也应该添加模型?还有什么是LZQUITE?用你的实际模型替换这里的LZQUITE模型。lzquick只是对序列化程序@RahulSharma的命名
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__"
class DispvsLRSerializer(serializers.ModelSerializer):
    fk_field = serializers.Charfield(source='fk.field', read_only=True)
    class Meta:
        model = LR
        fields = [.....,
                  .....,
                 'fk_field']