Chcę serializować model, ale chcę dołączyć dodatkowe pole, które wymaga wykonywania niektórych wyszukiwań bazy danych w wystąpieniu modelu do serializacji:
class FooSerializer(serializers.ModelSerializer):
my_field = ... # result of some database queries on the input Foo object
class Meta:
model = Foo
fields = ('id', 'name', 'myfield')
Jaki jest właściwy sposób, aby to zrobić? Widzę, że można przekazać w dodatkowym „kontekście” do serializatora, czy poprawna odpowiedź jest przekazywana w dodatkowym polu w słowniku kontekstowym? Przy takim podejściu logika uzyskiwania pola, którego potrzebuję, nie byłaby niezależna od definicji serializatora, co jest idealne, ponieważ każda serializowana instancja będzie potrzebować my_field
. W innym miejscu dokumentacji serializatorów DRF jest napisane , że „dodatkowe pola mogą odpowiadać dowolnej właściwości lub wywoływać w modelu”. Czy mówię o dodatkowych polach? Czy powinienem zdefiniować funkcję w Foo
definicji modelu, która zwraca my_field
wartość, aw serializatorze podłączyć my_field do tego wywoływalnego? Jak to wygląda?
Z góry dziękuję, w razie potrzeby chętnie wyjaśnię pytanie.