我是Django框架的新手,但已经设法组建了一个包含视图,模型,模板的网站,并通过Django REST框架将其连接到我的数据库(Postgresql)。
我正在从数据库中检索数据,但是有些数据需要转换(例如,如果正数= 1,如果null = 0,或者将所有数字乘以100,依此类推)。我的问题是,我在Django哪里可以做到这一点?
这应该以某种方式在model.py,view.py或serializer.py中完成吗?
为这个基本问题道歉,但我正在努力解决这个问题。
我的model.py
from django.db import models
# Create your models here.
class Test(models.Model):
index = models.BigIntegerField(blank=True, null=True)
hash_id = models.BigIntegerField(primary_key=True, blank=True)
locality = models.TextField(blank=True, null=True)
page = models.BigIntegerField(blank=True, null=True)
latitude = models.FloatField(blank=True, null=True)
longitude = models.FloatField(blank=True, null=True)
...
serializer.py
from rest_framework import serializers
from rentlistings.models import Test
class coordinatesSerializer(serializers.ModelSerializer):
class Meta:
model = Test
fields = ('latitude', 'longitude')
class propertiesSerializer(serializers.ModelSerializer):
class Meta:
model = Test
fields = ('price', 'price', 'yields',
'num_floor', 'num_rooms', 'elevator', 'garage',
'balcony_size', 'garden_area', 'parking', 'terass',
'loggia', 'cellar', 'hash_id')
class TestSerializer(serializers.Serializer):
coordinates = coordinatesSerializer(many=True, read_only=True)
properties = propertiesSerializer(many=True, read_only=True)
class Meta:
model = Test
fields = ('coordinates', 'properties')
views.py
from rentlistings.models import Test
from rentlistings.serializers import TestSerializer
from rest_framework import generics
# Create your views here.
class test_list(generics.ListCreateAPIView):
queryset = Test.objects.all()
serializer_class = TestSerializer
答案 0 :(得分:0)
有几个选项,我喜欢为某些变换做的一件事是添加一个SerializerMethodField()并包含原始字段。
例如,如果我有一个平衡字段'并且还想包括布尔' owes_money'
class MySerializer(serialiers.ModelSerializer):
owes_money = serializers.SerializerMethodField()
def get_owes_money(self, instance):
return instance.balance > 0