Django REST Framework - 引用添加订单的用户

Django REST Framework - Reference to the User who added the order

我正在 Django REST Fremework 中创建一个应用程序,用户可以在其中添加订单。 我希望序列化程序根据令牌设置对用户的引用并完成“Client”模型字段。

它实际上与 HiddenField 一起使用,如文档中所示。 (Link: https://www.django-rest-framework.org/api-guide/fields/#hiddenfield)

class OrderSerializer(serializers.ModelSerializer):
    client = serializers.HiddenField(default=serializers.CurrentUserDefault())

class Meta:
    model = Order
    fields = '__all__'

问题是,当我获取单个订单或订单列表时,Client 字段当然是隐藏的,因为 HiddenField 类型。

curl -X GET http://127.0.0.1:8000/api/orders/12 
{
"id":12,
"name":"sprzatanie ogrodka",
"description":"dupa",
"price":"12.20",
"work_time_hours":2,
"work_time_minutes":50,
"workers_needed_num":3,
"coords_latitude":"-1.300000",
"coords_longitude":"1.100000",
"created_at":"2020-03-08T13:20:16.455289Z",
"finished_at":null,
"category":1,
"workers":[]
}

我希望该字段仍然捕获对已登录用户的引用,但同时在从 API.

返回数据时可见

我需要使用什么序列化程序字段类型?

谢谢!

浏览我发现的文档:https://www.django-rest-framework.org/api-guide/validators/


Using a standard field with read_only=True, but that also includes a default=… argument. This field will be used in the serializer output representation, but cannot be set directly by the user.

我认为这就是您需要的。 因此,您在模型中设置的任何字段类型都可以与 read_only=True 一起使用 例如:

client = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault())

希望对您有所帮助