2016-09-06 32 views
-2

這是models.pymodel.objects.create在視圖不工作在我的Django項目?

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)

+4

爲什麼人們會這樣做? **不要隱藏異常**。刪除那個try/except,並找出* actual *錯誤。 –

回答

0

最有可能發生錯誤,因爲你嘗試沒有電子郵件創建IOT,但它是必填字段。 你應該這樣做

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

爲了使你的代碼中,你選擇的方式工作(設置屬性逐個而不是一次),你需要擺脫的創建和執行以下操作:

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

有兩種不同的方式可以根據請求在模型中創建實體。在裏面創建調用save()方法,所以它們是完全相同的,但在這種情況下創建更方便。

另外通常你應該避免做create()然後save(),因爲它會向DB出現兩個查詢。

UPD:+1 to @ Daniel對異常的評論

+0

我已經試過這些,但仍然不能正常工作 –

+0

請問您能打印一個例外嗎?做一些事情'除了例外作爲exc:' –

相關問題