【发布时间】:2021-04-18 03:00:24
【问题描述】:
在使用 get 方法之前,我需要编写 if else 逻辑以在我的值旁边显示文本。
models.py
class AnalysisResult(models.Model):
user_id=models.IntegerField(primary_key=True)
E=models.IntegerField()
A=models.IntegerField()
C=models.IntegerField()
N=models.IntegerField()
O=models.IntegerField()
total=models.IntegerField()
class Meta:
db_table='analysis_result'
def __str__(self):
return self.response
使用 DRF 和序列化程序,我为这个模型创建了 api。当我点击 url 时,我创建的 api 看起来像这样。
[
{
"user_id": 1,
"E": 25,
"A": 14,
"C": 14,
"N": 38,
"O": 8,
"total": 99
}
]
但现在我想根据单个 E、A、C、N、O 的值显示一些文本。我的 api 应该是这样的
[
{
"user_id": 1,
"E": 25,
"A": 14,
"C": 14,
"N": 38,
"O": 8,
"total": 99,
"E_Text":"some text",
"A_Text":"some text",
"C_Text":"some text",
"N_text":"some text",
"O_text":"some text",
}
]
此文本因 E、A、C、N、O 的不同值而异
我怎么能完成这个我不理解的任务。请给我一个领导。
serailizer.py
class AnalysisResultSerializer(serializers.ModelSerializer):
class Meta:
model=AnalysisResult
fields='__all__'
views.py
@api_view(['GET'])
def AnalysisResultInfo(request,user_id):
if request.method == 'GET':
Results=AnalysisResult.objects.filter(pk=user_id)
serializer=AnalysisResultSerializer(Results, many=True)
return Response(serializer.data)
urls.py
path('Results/<int:user_id>/',views.AnalysisResultInfo)
我不想将所有这些文本存储在数据库中。我有一个想法,这可以使用 SerializerMethodField() 来完成。我只是不知道怎么做。
【问题讨论】:
-
您要获取的响应不是有效的 JSON。
-
哦,好吧!我明白了,我现在已经编辑了,但我的问题仍然是一样的。
-
@Ajaysaini 如果你能建议我一个合适的标题。
标签: django postgresql django-rest-framework logic django-serializer