【发布时间】:2021-11-08 22:50:29
【问题描述】:
我正在做一个有关 drf 的项目,我需要从数据库中获取数据(以千计),并显示选择性字段作为响应。
models.py
class TblDemo(models.Model):
tbl_id = models.IntegerField()
tbl_name = models.CharField(max_length=50)
tbl_size = models.CharField(max_length=50)
tbl_height = models.Charfield(max_length=50)
tbl_material = models.Charfield(max_length=50)
class Meta:
managed = True
db_table = 'tbl_demo'
views.py
class data_fetch(viewsets.ViewSet):
def tbl_list(self, request, format=None)
serializer = Tbl_Serializer_input(data=request.data)
if serializer.is_valid():
queryset1 = tbl_name.objects.all()
queryset2 = queryset1.filter(tbl_name=request.data.get("title"))
serializer = Tbl_Serializer_output(queryset2, many=True)
return Response(serializer.data)
序列化器.py
class Tbl_Serializer_input(serializers.Serializer):
title = serializers.CharField(required=True, max_length=50)
refer_no = serializers.CharField(required=True, max_length=50)
class Tbl_Serializer_output(serializers.Serializer):
tbl_id = serializers.CharField(max_length=50)
tbl_name = serializers.CharField(max_length=50)
tbl_size = serializers.CharField(max_length=50)
tbl_height = serializers.Charfield(max_length=50)
输出
[
{
"tbl_id":"1",
"tbl_name":"white table",
"tbl_size": "square",
"tbl_height": "2 feet"
},
{
"tbl_id":"2",
"tbl_name":"black table",
"tbl_size": "square",
"tbl_height": "3 feet"
},
.......and so on.
但是现在,要求是我不能更改数据库/模型,但需要添加更多字段,例如(“refer_no”、“material”和“density”,在每种情况下都是相同的)并且每个查询集中的对象,它不会存储在数据库中,但仅用于响应/输出。
所以,添加新参数后,我的输出将如下所示: 其中,“refer_no”直接取自输入以显示输出字段。 并且“材料”和“密度”不能添加到数据库中,只需要在中间进行硬编码即可。
新输出
[
{
"tbl_id":"1",
"refer_no":"abadadf",
"tbl_name":"white table",
"tbl_size": "square",
"tbl_height": "2 feet",
"density": "350gm/in"
"material": "tek wood"
},
{
"tbl_id":"2",
"refer_no":"abadadf",
"tbl_name":"black table",
"tbl_size": "square",
"tbl_height": "3 feet",
"density": "350gm/in",
"material": "tek wood"
},
.......and so on.
我实际上已经从数据库中添加了带有查询集的新字段,但是当它进行序列化时,它显示循环错误。
请帮忙。
【问题讨论】:
-
你在序列化器中试过
ReadOnlyField -
我认为你需要this。在这种方法中,您可以访问
self.request,因此您可以访问输入数据。
标签: django django-models django-rest-framework django-views django-serializer