Зачем вам нужны все экземпляры? Если вы хотите манипулировать чем-либо во всех случаях, лучше сделайте это, прежде чем передать это в качестве аргумента в Serializer. Если вы хотите получить индивидуальный экземпляр, вы должны получить значение в параметре data
. Но ваши отступления не верны. Попробуйте вот так:
class abcSerializer (serializers.ModelSerializer):
xyz = serializers.SerializerMethodField("getXYZ")
class Meta:
model = abc
def getXYZ(self, data):
print(data) # it will print a instance of abc
return value_based_on_data
Обновление
Тогда я думаю, что вам следует попробовать вот так:
Первое обновление сериализатора класса:
class abcSerializer (serializers.ModelSerializer): # use PascalCase for naming classes
xyz = serializers.ReadOnlyField()
class Meta:
model = abc
fields = '__all__' # use PascalCase for naming classes
Тогда используйте следующий код для получения значений xyz
:
obj_list = []
for i, item in enumerate(abc.objects.all()):
item.xyz = name_list[i]
obj_list.append(item)
abcSerializer(obj_list, many=True).data