我正在重写应用程序的后端以使用 Django,并且我希望尽可能保持前端不变。我需要与项目之间发送的 JSON 保持一致。
在models.py
我有:
class Resource(models.Model):
# Name chosen for consistency with old app
_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
@property
def bookingPercentage(self):
from bookings.models import Booking
return Booking.objects.filter(resource=self)
.aggregate(models.Sum("percent"))["percent__sum"]
并以views.py
JSON 格式获取所有资源数据:
def get_resources(request):
resources = []
for resource in Resource.objects.all():
resources.append({
"_id": resource._id,
"name": resource.first,
"bookingPercentage": resource.bookingPercentage
})
return HttpResponse(json.dumps(resources))
这完全符合我的需要,但它似乎与 Django 和/或 Python 有点对立。使用.all().values
将不起作用,因为bookinPercentage
它是派生属性。
另一个问题是,还有其他类似的模型需要以几乎相同的方式表示 JSON。我会重写类似的代码,只是对模型的值使用不同的名称。一般来说,有没有更好的方法来做到这一点,它更 Pythonic/djangothonic/不需要手动创建 JSON?