【发布时间】:2018-03-27 23:50:21
【问题描述】:
我想创建一个允许通过 POST 请求发送 JSON 的 API。 然后 JSON 应该被传递给一个序列化程序,该序列化程序负责创建一个新对象并用现有数据填充它。
它适用于“简单”的情况,例如基本的纯字符输入,如用户名等,但在创建 OneToOne 关系时我被严重卡住了。这是示例代码。
views.py 中名为 employee_list 的函数 - data['account'] 是有效用户名,User 实例已成功选择!
data = JSONParser().parse(request)
user_object = User.objects.get(username=data['account'])
data['account'] = user_object # this is now a valid User object
serializer = EmployeeSerializer(data=data)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data, status=201)
return JsonResponse(serializer.errors, status=400)
型号
class Employee(models.Model)
id = models.AutoField(primary_key=True)
name = models.CharField(...)
surname = models.CharField...
account = models.OneToOneField(User)
role = ...
salary = ...
picture = ...
还有序列化器
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = (...) # all fields of the `Employee` model
到目前为止一切都很好,但是,序列化程序从未验证!当我不再需要 OneToOne 关系时,它就起作用了..
如何创建一个与 User 对象具有有效 OneToOne 关系的新 Employee 对象?
提前致谢。
【问题讨论】:
-
什么是验证错误?你可以在里面传递 raise_exception:is_valid(raise_exception=True)
-
感谢您的提示,甚至不知道这是可能的。它给了我确切的错误,因此我能够独自解决它。非常感谢!
标签: python json django django-rest-framework