Django Rest Framework API с сериализатором Primary Key Related Field говорит, что поле является обязательным, даже когда оно включено
У меня есть API с Django Rest Framework и один из моих сериализаторов выглядит следующим образом:
class InputtedWaittimeSerializer(serializers.ModelSerializer):
restaurant = serializers.PrimaryKeyRelatedField(many=False, queryset=Restaurant.objects.all(), read_only = False)
reporting_user = serializers.PrimaryKeyRelatedField(many=False, queryset=AppUser.objects.all(), read_only = False)
class Meta:
model = InputtedWaittime
fields = ['id', 'restaurant', 'wait_length', 'reporting_user', 'accuracy', 'point_value', 'post_time', 'arrival_time', 'seated_time']
depth = 1
read_only_fields = ('id','accuracy','point_value','post_time')
Restaurant
и AppUser
- это разные модели, а модель Serializer (InputtedWaittime
) имеет поля, которые являются внешними ключами для первых двух моделей. Я добавил PrimaryKeyRelatedField
для каждого из этих внешних ключей, чтобы API показывал только их первичные ключи. Таким образом, GET-запрос к этому API выглядит следующим образом:
{
"id": 1,
"restaurant": 1,
"wait_length": 22,
"reporting_user": 1,
"accuracy": 1.0,
"point_value": 10,
"post_time": "2022-05-08T23:39:11.414114Z",
"arrival_time": "2022-05-08T23:39:05Z",
"seated_time": null
}
Где reporting_user
и restaurant
просто имеют первичные ключи к своим записям в других моделях. Однако я столкнулся с проблемой, когда пытаюсь отправить данные в этот API. Когда я отправляю данные только с первичными ключами для полей внешнего ключа, API возвращает следующий ответ:POST
{"restaurant":["This field is required."],"reporting_user":["This field is required."]}%
Я использовал эту команду для отправки данных в этот API:
curl -X POST -F ‘restaurant=1’ -F ‘wait_length=22’ -F ‘reporting_user=1’ http://127.0.0.1:8000/api/inputtedwaittimes/ -H 'Authorization: Token ___TOKEN___'
Я не уверен, почему он говорит, что поля restaurant
и reporting_user
являются обязательными, когда я все еще включил их первичные ключи. Спасибо за любую помощь!