视图中的model.objects.create在我的django项目中不起作用?

时间:2016-09-06 10:54:41

标签: python django django-rest-framework

这是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。当我发送数据时,它不存储在数据库中并返回:

  

( '错误',状态= status.HTTP_400_BAD_REQUEST)

1 个答案:

答案 0 :(得分:0)

很可能是因为您尝试在没有电子邮件的情况下创建Iot而发生错误,但它是必填字段。 你应该做点什么

Iot.objects.create(user=user, email=email)

要使您的代码以您选择的方式工作(逐个设置属性而不是一次设置),您需要摆脱创建并执行以下操作:

s = Iot(user=user)
s.email = email
s.save()

有两种不同的方法可以根据请求在模型中创建实体。在里面创建调用save()方法,所以它们完全相同,但在这种情况下创建更方便。

通常你应该避免使用create()然后save(),因为它会向DB显示两个查询。

UPD:+1给@ Daniel关于异常的评论