Я не профессиональный Django пользователь, я постараюсь описать эту проблему как можно более кратко.
У меня есть Django Определение сериализатора:
class PrioritisedMarketActionSerializer(serializers.Serializer):
marketaction = MarketActionSerializer(required=True)
priority = serializers.IntegerField()
и определение MarketActionSerializer -
class MarketActionClearingSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(required=True)
class Meta:
model = MarketAction
fields = (
'id', 'date', 'actionStartTime', 'actionEndTime', 'value', 'uom', 'price', 'deliveryPoint',
'marketSessionid',
'marketActorid', 'formid', 'actionTypeid', 'statusid', 'loadid', 'cpu', 'ram', 'disk',)
depth = 0
error_status_codes = {
HTTP_400_BAD_REQUEST: 'Bad Request',
HTTP_201_CREATED: 'Created',
HTTP_204_NO_CONTENT: 'No content',
HTTP_301_MOVED_PERMANENTLY: 'Moved permanently',
HTTP_401_UNAUTHORIZED: 'Unauthorized',
HTTP_403_FORBIDDEN: 'Forbidden',
HTTP_404_NOT_FOUND: 'Not found',
HTTP_500_INTERNAL_SERVER_ERROR: 'Internal server error'
}
Моя цель - создать список этих объектов сериализаторов после того, как я получил через метод POST список объектов MarketAction. Я объявляю пустой список, где хранить эти объекты:
output = []
Затем, перебирая полученные объекты:
prioritised_ma["marketaction"] = MarketActionSerializer(ma).data
prioritised_ma["priority"] = 1
output.append(PrioritisedMarketActionsSerializer(prioritised_ma).data)
Поле ["priority"] было установлено в 1, { int}, для целей тестирования. Однако, когда я звоню:
PrioritisedMarketActionsSerializer(prioritised_ma).data
я получаю эту странную ошибку:
'int' object has no attribute 'pk'
Полная связанная трассировка стека:
Traceback (most recent call last):
File "/home/vlad/Documents/Research Projects/Catalyst Marketplace/GitProjects/orchestrator/information_broker/ib/views/api.py", line 709, in post
output.append(PrioritisedMarketSerializer(prioritised_ma_clearing).data)
File "/home/vlad/.local/lib/python3.6/site-packages/rest_framework/serializers.py", line 563, in data
ret = super(Serializer, self).data
File "/home/vlad/.local/lib/python3.6/site-packages/rest_framework/serializers.py", line 262, in data
self._data = self.to_representation(self.instance)
File "/home/vlad/.local/lib/python3.6/site-packages/rest_framework/serializers.py", line 530, in to_representation
ret[field.field_name] = field.to_representation(attribute)
File "/home/vlad/.local/lib/python3.6/site-packages/rest_framework/serializers.py", line 530, in to_representation
ret[field.field_name] = field.to_representation(attribute)
File "/home/vlad/.local/lib/python3.6/site-packages/rest_framework/relations.py", line 272, in to_representation
return value.pk
AttributeError: 'int' object has no attribute 'pk'
Я предполагаю ошибку связано с полем «приоритет», которое является значением {int}, но я не могу понять его.
Может ли кто-нибудь помочь мне, пожалуйста, или дать мне подсказку, что я здесь делаю неправильно? Я был бы очень признателен.
Большое спасибо, я желаю вам sh замечательного дня!