![](/img/trans.png)
[英]How to check if an object is either on the keys or in the values of a dictionary?
[英]How to turn fields and values of a model object into keys and values of a dictionary
我正在 Django 中構建一個應用程序。
我正在開發一個 API 服務視圖,它返回存儲在我的 model 中的城市列表,具有以下功能:
def cities_list_api(request):
cities = target_area_input_data.objects.all()
data = {"cities":list(cities.values("pk","Name","Longitude","Latitude","Radius"))}
response = JsonResponse(data)
return response
返回:
{“城市”:[{“pk”:2,“名稱”:“羅馬”,“經度”:12.49,“緯度”:41.89,“半徑”:10.5},{“pk”:6,“名稱” :“越南河內”,“經度”:105.84,“緯度”:21.02,“半徑”:10.0},{“pk”:1,“名稱”:“米蘭”,“經度”:9.19,“緯度” “:45.46,“半徑”:8.0},{“pk”:3,“名稱”:“博洛尼亞”,“經度”:11.34,“緯度”:44.49,“半徑”:5.5},{“pk”: 4、“名稱”:“維羅納”、“經度”:10.97、“緯度”:45.41、“半徑”:4.5}、{“pk”:5、“名稱”:“pszczyna, Polonia”、“經度”: 18.93,“緯度”:49.98,“半徑”:3.0}]}
為了簡短起見,我可以編寫相同的視圖,例如:
def cities_list_api(request):
cities = target_area_input_data.objects.all()
data = {"cities":list(cities.values())}
response = JsonResponse(data)
return response
這樣我就不必在values()
括號內寫入所有字段。
現在,我正在開發一個 API 服務視圖,它返回給定城市 ID 的城市特征。
def city_detail_api(request, pk):
try:
city = target_area_input_data.objects.get(pk=pk)
data = {
"city":
{
"pk":city.pk,
"Name":city.Name,
"Longitude":city.Longitude,
"Latitude":city.Latitude,
"Radius":city.Radius,
}
}
response = JsonResponse(data)
return response
返回:
{“城市”:{“pk”:2,“名稱”:“羅馬”,“經度”:12.494757,“緯度”:41.892786,“半徑”:10.5}}
我只想將所需實例的所有屬性顯示在字典中,該字典保存在字典 key city
中,因此,為了簡短起見,我想將該視圖更改為這個:
def city_detail_api(request, pk):
try:
city = target_area_input_data.objects.get(pk=pk)
data = {
"city":right_expression
}
response = JsonResponse(data)
return response
right_expression
應該是什么?
即使這次我怎么能避免寫所有的字段?
我會使用 DRF 序列化程序來做到這一點,例如:
from rest_framework import serializers
class CitySerializer(serializers.ModelSerializer):
class Meta:
fields = (
"id",
"name"
"longitud",
)
model = City
然后在視圖中:
def city_detail_api(request, pk):
city = target_area_input_data.objects.get(pk=pk)
data = dict(city=CitySerializer(city).data)
response = JsonResponse(data)
return response
我認為使用 DRF 是一種更標准的方法,它使您有機會解決序列化程序中的一些計算字段,並嵌套另一個序列化程序,最后您將擁有 DRF 序列化程序功能的所有功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.