#django #django-rest-framework
#django #django-rest-framework
Вопрос:
Я очень новичок в django rest framework. У меня есть две модели ModelA и ModelB.
У меня есть поисковик ModelB для отображения всех полей в запросе get.
Из-за некоторых причин ModelA and ModelB
, не связанных, FK
но ModelA.objects.get(modelB.field1=modelA.pk)
это вернет отдельные данные.
class ModelASerailzer(serializers.ModelSerializer):
class Meta:
model = ModelA
fields = ['f1','f2']
class ModelBSerailzer(serializers.ModelSerializer):
# I want to do something like this here
extra_field = ModelA.objects.get(modelB.field1=modelA.pk).f1 # this will return the data in shell
#and normal django view but I don't know how to implement this in django rest ?
class Meta:
model = ModelB
fields = ['field1','field2', 'extra_field']
Я пробовал так
class ModelBSerializer(serializers.ModelSerializer):
extra_field = serializers.SerializerMethodField()
def get_extra_field(self, member):
return ModelA.objects.get(pk=member.field).f1
class Meta:
model = ModelB
fields = ['field1','field2', 'extra_field']
При этом я получил эту ошибку UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
ModelA.objects.get(pk=member.field).f1
это файловое поле.
Ответ №1:
Попробуйте это (я не тестировал):
class ModelBSerializer(serializers.ModelSerializer):
extra_field = serializers.SerializerMethodField('get_extra_field')
def get_extra_field(self, member):
return ModelASerializer(ModelA.objects.get(pk=member.field)).data
class Meta:
model = ModelB
fields = ['field1','field2', 'extra_field']