Я хочу использовать атрибут variation
внутри функции to_representation
в serializers.py
. Когда я попытался реализовать это, произошла ошибка. Я думаю, что я все еще не понимаю основы Python класса.
Вот мой serializers.py
:
class MarketSerializer(serializers.ModelSerializer):
regions = serializers.PrimaryKeyRelatedField(many=True, queryset=Region.objects.all())
languages = serializers.PrimaryKeyRelatedField(many=True, queryset=Language.objects.all())
variation = serializers.SerializerMethodField('get_product_variations')
class Meta:
model = Market
fields = ['id', 'regions', 'languages', 'name', 'status', 'variation']
depth = 1
@staticmethod
def get_product_variations(self):
return Product.objects.filter(distributor__region__market=self).distinct().count()
def to_representation(self, instance):
if self.context['request'].method == 'GET':
regions = RegionSerializer(instance.regions, many=True).data
languages = LanguageSerializer(instance.languages, many=True).data
data = {
'id': instance.id,
'regions': regions,
'languages': languages,
'name': instance.name,
'status': instance.status,
'variation': self.variation,
}
return data
return Serializer.to_representation(self, instance)
'variation': self.variation
дает мне эту ошибку при просмотре API:
AttributeError в / api / markets /
Объект 'MarketSerializer' не имеет атрибута 'variation'
В то время как 'variation': MarketSerializer.variation
и 'variation': self.__class__.variation
выдают мне эту ошибку:
AttributeError at / api / markets /
объект типа «MarketSerializer» не имеет атрибута «вариация»
Редактировать
'variation': variation
дает мне эта ошибка:
NameError в / api / markets /
имя 'вариация' не определено