python - 当 API Endpoint 的字段名称与具有 Django Rest 框架的模型不同时的嵌套模型
问题描述
假设我收到以下 json:
{
"id": 1234,
"created_at": "2019-10-22T14:18:09-04:00",
"person": {
"id": 7234,
"name": "John Smith"
},
"ticket": {
"id": 5432,
"person_id": 7234,
"name": "How to fix this function?"
}
}
我想序列化然后保存到带有下表的数据库中:事件、人员和票证,其中票证描述如下:
class Person(models.Model):
id = models.PositiveIntegerField(primary_key=True)
name = models.CharField(max_length=100)
class Ticket(models.Model):
id = models.PositiveIntegerField(primary_key=True)
person = models.ForeignKey('Person')
name = models.CharField(max_length=100)
class Event(models.Model):
id = models.PositiveIntegerField(primary_key=True)
person = models.ForeignKey('Person')
ticket = models.ForeignKey('Ticket')
created_at = models.DateTimeField()
Ticket Serializer 应该是什么样子?目前,我有什么不起作用:
class TicketSerializer(serializers.ModelSerializer):
person_id = serializers.IntegerField()
class Meta:
model = models.Ticket
def to_internal_value(self, data):
try:
data['person'] = data['person_id']
except KeyError:
pass
return super().to_internal_value(data)
class EventSerializer(UniqueFieldsMixin, NestedCreateMixin, serializers.ModelSerializer):
person = PersonSerializer()
ticket = TicketSerializer()
class Meta:
model = models.Event
我得到的错误是:
rest_framework.exceptions.ValidationError: {'ticket': {'person': [ErrorDetail(string='Invalid pk "7234" - object does not exist.', code='does_not_exist')]}}
解决方案
推荐阅读
- django - 我在 django views.py 文件中有一个错误,httpresponse
- jquery - 在 index.ejs 中引用 jQuery 和 Bootstrap CDN 作为源
- webforms - VS 2019 Ent 16.9.1 使用 ReportDesigner 的属性表崩溃
- bash - 分离 CUDA_VISIBLE_DEVICES 变量的值
- adobe - Power Automate-Adobe Sign-Agreement CC
- amazon-web-services - 使用 Terraform 的 DynamoDB 的 API 网关代理?
- git - 删除 git 提交并导航到 master
- python - 如何在 Python 中为 datetime 对象分配时区?
- spring-boot - 如果在restTemplate中第一次失败,如何重试RestAPI连接?
- matplotlib - matplotlib 在 jupyter 和终端上具有预定义样式的非常奇怪的行为