2013-05-18 110 views
0

models.py「NoneType」對象有沒有屬性「用戶」

class Report(models.Model): 
    user = models.ForeignKey(User, null=False) 
    photo_files_attached = models.BooleanField('Photos', default=False) 

views.py

def media(request): 
    user = request.user 
    try: 

     report = Report.objects.get(user=user.id) 
    except: 
     report = None 

    report_dir = str(report.user.id) + '/' + str(report.id) 
    output_dir = settings.MEDIA_ROOT + '/' + report_dir 
    imagelist = [] 
    if os.path.exists(output_dir): 
     os.chdir(output_dir) 
     for files in os.listdir("."): 
      for extension in JPEG_ALLOWED: 
       if files.endswith(extension): 
        image_with_path = report_dir + '/' + files 
        imagelist.append(image_with_path) 
    return render(request, 'incident/media.html', 
        { 
        'newreport_menu': True, 
        'report':report, 

       }) 

我想上傳圖片文件並將其保存到數據庫中,得到了如下錯誤 「'NoneType' object has no attribute 'user'

+1

在.get(user = user.id)工作時,'.get(user = user)'就足夠了。 – karthikr

+0

對於我的情況,它仍然給出相同的錯誤 – user2086641

+0

是的..我知道..我沒有給你一個解決方案。做一件事 - 進入管理界面,爲這個用戶添加一個報告(如果尚不存在),並再次執行代碼。它應該工作。代碼對我來說看起來很好 – karthikr

回答

3

看來

Report.objects.get(user=user.id) 

給你一個EmptyQuerySet

有問題的用戶可能還沒有任何關聯的Report實例。

你可以使用get_or_create

+0

我通過get_or_create得到了更改,我得到的同樣錯誤 – user2086641

+0

獲取或創建返回2個參數,創建的標誌和實例,您需要指定後者。 'obj = Report.objects.get_or_create(** kwargs)[0]' –

1

看起來報告None在你的代碼:

try: 
    report = Report.objects.get(user=user.id) 
except: 
    report = None # <---- your are most probably here 

所以後來report.user將提高'NoneType' object has no attribute 'user'。確保報告不是None並進行適當的檢查。

相關問題