我试图使用PrimaryKey从django rest框架中的外键相关字段中提取数据。
Views.py
类DispatchervsLrAPIView(CreateAPIView):
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
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_quiz"?其中lr_quiz是与外键相关的字段
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和它的相关测试的数据
发布于 2019-11-12 09:48:46
您可以使用嵌套关系来表示多个关系。
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__"发布于 2019-11-12 10:33:26
class DispvsLRSerializer(serializers.ModelSerializer):
fk_field = serializers.Charfield(source='fk.field', read_only=True)
class Meta:
model = LR
fields = [.....,
.....,
'fk_field']你可以用这种方式把你的“外键”字段关联起来
https://stackoverflow.com/questions/58815860
复制相似问题