【发布时间】:2022-02-12 15:02:07
【问题描述】:
我是 Django 新手
目前我正在尝试在序列化程序中返回的 json 上添加一个简单的额外键。这是我的序列化程序的 create() 覆盖:
def create(self, validated_data):
available_dates = validated_data.pop("available_dates")
# Default expiry time is 3 days
expiry = datetime.datetime.now() + datetime.timedelta(days=3)
event = Events.objects.create(**validated_data, expiry=expiry)
for selectedTime in available_dates:
AvailableDates.objects.create(
event=event,
**selectedTime,
)
signer = Signer()
signedObject = signer.sign_object(
{"expiry": expiry.isoformat(), "id": event.id}
)
return {**event, "signed_url": signedObject}
如你所见,我不想只返回事件,但我想添加一个签名的 url。
这给了我一个错误:
'Events' object is not a mapping
那么我该如何添加额外的密钥呢?我在 create 函数中返回什么?我可以在 DRF 中创建 Response() 作为 create 函数的返回吗?
【问题讨论】:
-
create用于在数据库中创建一个新的模型对象。你宁愿覆盖to_representation?! -
对.. 但是如果我只想在创建后返回 url 怎么办?我应该定制哪个部分?
-
这是什么意思?!
-
我的意思是我只想添加
signed_url键作为我的post端点的返回(创建新行时)。 @deceze。希望有意义
标签: python django django-rest-framework