2017-01-23 6 views
0

My IDカラムは自動インクリメントですが、オブジェクトを作成して保存した後に別の関数にIDを送信する必要があります。最後に作成されたオブジェクトID

actionObj = ScAnsAction() 

#actionObj.id -- auto increment 

actionObj.user_id = getUserID(request) 
actionObj.action_id = 6 
actionObj.req_id = request_id 
actionObj.a_date = i.strftime("%Y-%m-%d") 
actionObj.save() 

setUserNotifs(request,#should be latest above objectID) 

私はクエリセットに対して最新の機能を試しましたが、インデックスからリストを取得しました。

SetUserNotif機能

def setUserNotifs(request,request_id): 
    username = request.user.username 
    object_id_list = ScAns.objects.filter(username=username).values_list('id',flat=True) 
    actionUsers = ScAnsAction.objects.filter(req_id=request_id).values_list('user_id',flat=True).exclude(user_id=object_id_list).distinct() 
    requestCreaterUsername = ScRequests.objects.filter(id=request_id).values_list('sender',flat=True) 
    requestCreaterID = ScAns.objects.filter(username=requestCreaterUsername).values_list('id',flat=True) 

    # send notification to users who has been commented on that request 
    for actionUser in actionUsers: 
     actionObj = ScActionNotif() 
     actionObj.action_id = request_id 
     actionObj.user_id = actionUser 
     actionObj.notif = "unread" 
     actionObj.save() 

    # send notification to the creator of the request 
    actionObj = ScActionNotif() 
    actionObj.action_id = request_id 
    actionObj.user_id = requestCreaterID[0] 
    actionObj.notif = "unread" 
    actionObj.save() 

トレースバック:

File "/Users/natigvahabov/Desktop/Django/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner 
    39.    response = get_response(request) 

File "/Users/natigvahabov/Desktop/Django/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response 
    187.     response = self.process_exception_by_middleware(e, request) 

File "/Users/natigvahabov/Desktop/Django/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response 
    185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "/Users/natigvahabov/Desktop/Django2/src/profiles/views.py" in addComment 
    99.  setUserNotifs(request,actionObj.id) 

File "/Users/natigvahabov/Desktop/Django2/src/database/views.py" in setUserNotifs 
    136. actionObj.user_id = requestCreaterID[0] 

File "/Users/natigvahabov/Desktop/Django/lib/python2.7/site-packages/django/db/models/query.py" in __getitem__ 
    295.   return list(qs)[0] 

Exception Type: IndexError at /about/addComment/ 
Exception Value: list index out of range 
+0

問題はダニエルとしての私の機能にありました前記。私はfunction accept parametersの数を3(request、request_id、actionObj.id) –

+0

に変更し、プライマリキーモデルフィールドがAutoFieldであることを確認してください –

答えて

2

あなたがactionObjのIDが必要な場合、あなたはそれを使用する必要があります。

setUserNotifs(request, actionObj.id) 
+0

"リストインデックスが範囲外です" –

+0

ああ。それはあなたが受け取っているエラーですか、それともあなたはただそれを言いましたか?おそらく、あなたが投稿したコードにはないので、エラーがどこで起こっているのかを教えてください。良いエラーメッセージとトレースバックが良いスタートです。 –

+0

私は投稿 –

関連する問題