簡體   English   中英

從Django中的用戶名獲取用戶對象

[英]Getting User object from username in django

我正在django celery任務中嘗試以下代碼

@app.task
def search(q, userstring):
    uid = User.objects.get(username=userstring)
    messages.info(uid, 'Initiating search in background.')
    [...]

我的看法如下:

search.delay(self.request.user.get_username(), form.instance.query)

我收到以下錯誤:

>[2014-06-05 12:04:04,352: ERROR/MainProcess] Task listthings.tasks.search[5aaa77b4-c7be-4d6a-9127-626e63d0dfbe] raised unexpected: DoesNotExist('User matching query does not >exist.',)
Traceback (most recent call last):
  File "/webapps/wcw/local/lib/python2.7/site-packages/celery/app/trace.py", line 240, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/webapps/wcw/local/lib/python2.7/site-packages/celery/app/trace.py", line 437, in __protected_call__
    return self.run(*args, **kwargs)
  __File "/webapps/wcw/webcamwatch/listcams/tasks.py", line 44, in search
    uid = User.objects.get(username=userstring)__
  File "/webapps/wcw/local/lib/python2.7/site-packages/django/db/models/manager.py", line 151, in get
    return self.get_queryset().get(*args, **kwargs)
  File "/webapps/wcw/local/lib/python2.7/site-packages/django/db/models/query.py", line 310, in get
    self.model._meta.object_name)
Exception: User matching query does not exist.

我想要實現的是將活動用戶從視圖傳遞到django-aync-messages

非常感謝任何對我的錯誤的建議或指針(包括更好的方法!)。

您查詢用戶的方式沒有任何問題。 您的代碼的問題在於,您以錯誤的順序傳遞了變量:任務期望(q, userstring)但是傳遞(username, query)

但是我不知道為什么當您只需簡單地傳遞User實例的主鍵時,就查詢用戶名:

def search(q, user_id):
    uid = User.objects.get(pk=user_id)

並稱之為:

search.delay(form.instance.query, self.request.user.pk)

您需要以某種方式處理沒有用戶的情況,例如:

@app.task
def search(q, userstring):
    try:
        uid = User.objects.get(username=userstring)
    except DoesNotExist, e:
        return None

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM