python - Django REST Framework - 对添加订单的用户的引用
问题描述
我正在 Django REST Fremework 中创建一个应用程序,用户可以在其中添加订单。我希望序列化程序根据令牌设置对用户的引用并完成“客户端”模型字段。
它实际上适用于 HiddenField,如文档中所示。(链接: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__'
问题是,当我获取单个订单或订单列表时,由于 HiddenField 类型, Client字段当然是隐藏的。
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.
我认为这就是你需要的。因此,您在 Model 中设置的任何字段类型都可以用于read_only=True
例如:
client = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault())
希望这可以帮助
推荐阅读
- php - 两次调用时,Wordpress 简码会重复帖子
- docker - Docker 上的 Kafka 无法从其他容器连接
- sql - Amazon Redshift 执行 PostgreSQL to_json 和 array_to_json 的方法
- python - 检测在python中按下的键不起作用
- sql - SQL Server 2012 中的中位数改为 avg()
- python-3.x - Python 3.7 + Ansible = clang 错误
- neo4j - 如何仅查询与某些节点相关的节点
- javascript - 按钮定位在完全错误的位置
- eclipse - 哪个 Eclipse Photon 插件提供“JPA 工具”上下文菜单项?
- fiware-orion - dbName 的最大长度为 10