这是models.py
from django.db import models
class Iot(models.Model):
user = models.CharField(max_length="50")
email = models.EmailField()
我的views.py
def Test(request):
if request.method == 'PUT':
user = request.data['user']
email = request.data['email']
try:
s = Iot.objects.create(user=user)
print s.user
s.email = email
s.save()
return Response('ok', status=status.HTTP_200_OK)
except:
return Response('error',status=status.HTTP_400_BAD_REQUEST)
我使用的是Django REST_Framework。当我发送数据时,它不存储在数据库中并返回:
('error',status=status.HTTP_400_BAD_REQUEST)
2条答案
按热度按时间yduiuuwa1#
最有可能的错误发生,因为你试图创建没有电子邮件的Iot,但它是必填字段。你应该做一些像
为了让你的代码按照你选择的方式工作(一个接一个地设置属性,而不是一次设置),你需要摆脱create并执行以下操作:
有两种不同的方法来根据请求在模型中创建实体。Create在内部调用保存()方法,所以它们是完全相同的,但是在这种情况下create更方便。
通常你也应该避免先创建()然后保存(),因为这会给数据库带来两个查询。
UPD:+1对@丹尼尔关于异常的评论
s5a0g9ez2#
由于某些原因,无法访问对象属性。您可以通过手动将管理器添加到模型定义中来纠正此问题,如下所示:
此外,就像@丹尼尔说的那样,你可以删除try/catch来查看我发现的问题的真实的原因。