Скажите, у меня есть сериализатор A
class SerializerA(ModelSerializer):
some_field = CharField()
some_other_field = CharField()
field_require_other_model = SerializerMethodField()
class Meta:
model = ModelA
fields = ('some_field', 'some_other_field', 'field_require_other_model')
def get_field_require_other_model(self, instance):
other_model_qs = ModelB.objects.filter(email=instance.email)
# say I want to get whatever that comes first
return other_model_qs.first().useful_info
Как видно выше, SerializerA
использует ModelA
для получения всех полей, кроме одного в ModelB
. Я могу получить информацию от ModelB
, делающей то, что я сделал, но я не знаю, является ли это лучшим способом получения данных. Я не уверен, нужно ли мне так часто обращаться к базе данных или есть способ лениво ее оценить.
Кроме того, что если у меня есть другой SerializerMethodField()
, который использует ModelB
, но для другой информации. Этот способ все еще является лучшим способом получения данных?