Тестирование POST-запроса, вызывающего ошибку KeyError в Postman
В настоящее время я тестирую POST-запрос для модели Tagging. Для этого я попытался переопределить метод create(). Я не уверен, что сделал это правильно, но я перепробовал все, что мог придумать. Я даже удалил его и попробовал протестировать POST-запрос без переопределения.
Я продолжаю получать эту ошибку при тестировании с Postman:
KeyError at /api/tagging 'user'
Как я могу избавиться от этой ошибки? Чего не хватает моему методу create()?
serializers.py
class TaggingSerializer(serializers.ModelSerializer):
tag = StringRelatedField()
resource = serializers.PrimaryKeyRelatedField(read_only=True)
gameround = serializers.PrimaryKeyRelatedField(read_only=True)
user = CustomUserSerializer(required=False, read_only=True)
class Meta:
model = Tagging
fields = ('id', 'user', 'gameround', 'resource', 'tag', 'created', 'score', 'origin')
def create(self, validated_data):
"""Create and return a new tagging"""
tagging = Tagging(
user=validated_data["user"],
gameround=validated_data["gameround"],
resource=validated_data["resource"],
tag=validated_data["tag"],
created=validated_data["created"],
score=validated_data["score"],
origin=validated_data["origin"]
)
tagging.save()
return tagging
def to_representation(self, data):
data = super().to_representation(data)
return data
Если я изменю метод create на:
def create(self, validated_data):
"""Create and return a new tagging"""
tagging = Tagging(
user=validated_data.get("user"),
gameround=validated_data.get("gameround"),
resource=validated_data.get("resource"),
tag=validated_data.get("tag"),
created=validated_data.get("created"),
score=validated_data.get("score"),
origin=validated_data.get("origin")
)
tagging.save()
return tagging
Я получаю
IntegrityError: null value in column "created" of relation "app_tagging" violates not-null constraint
DETAIL: Failing row contains (15, null, 0, , null, null, null, null).
Это мой запрос на почту:
def post(self, request, *args, **kwargs):
tagging_serializer = TaggingSerializer(data=request.data)
if tagging_serializer.is_valid(raise_exception=True):
tagging_serializer.save(tagging=request.data)
return Response({"status": "success", "data": tagging_serializer.data}, status=status.HTTP_200_OK)
else:
return Response({"status": "error", "data": tagging_serializer.errors}, status=status.HTTP_400_BAD_REQUEST)
Это JSON, который я отправляю
{
"user": null,
"gameround": 1,
"resource": 602,
"tag": "RTTesttaggg",
"created": "2022-12-12T15:19:49.031000Z",
"score": 0,
"origin": ""
}
models.py