簡體   English   中英

'QueryDict' 對象沒有屬性 'user'

[英]'QueryDict' object has no attribute 'user'

我目前正在 Django 中處理我的項目,我需要針對當前用戶顯示外鍵(指定)。 它就像我想要的那樣顯示得很好,但是當我提交表單時它會拋出一個錯誤,'QueryDict' 對象沒有屬性 'user'。

錯誤信息

Traceback (most recent call last):
File "C:\Users\KARTHICK\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\KARTHICK\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\KARTHICK\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\KARTHICK\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\auth\decorators.py", line 21, in _wrapped_view
return view_func(request, *args, **kwargs)
File "F:\TECH\emp\crm\employee\views.py", line 26, in employee_form
form = EmployeeForm(request.POST)
File "F:\TECH\emp\crm\employee\forms.py", line 40, in __init__
self.fields['designation'].queryset = req.user.designation.all()
AttributeError: 'QueryDict' object has no attribute 'user'
[16/Mar/2020 13:06:45] "POST /employee/add/ HTTP/1.1" 500 78894

模型.py

class Designation(models.Model):
     user = models.ForeignKey(User,on_delete=models.CASCADE,related_name="designation",null=True,blank=True)
     title = models.CharField(max_length=100)
class Employee(models.Model):
     user = models.ForeignKey(User,on_delete=models.CASCADE,related_name="employee",null=True,blank=True)                                                           
     designation = models.ForeignKey(Designation,on_delete=models.CASCADE)

表格.py

def __init__(self,req,*args,**kwargs):
    super(EmployeeForm,self).__init__(*args,**kwargs)
    self.fields['designation'].queryset = req.user.designation.all()

視圖.py

 def employee_form(request,id=0):
  if request.method == 'GET':
    if id == 0:       
        req = request.user.designation.all()     
        form = EmployeeForm(req)
    else:

        employee = Employee.objects.get(pk=id)
        if employee in request.user.employee.all():
            form = EmployeeForm(request,instance=employee)
        else:
            return redirect('/employee')
    return render(request,'employee-form.html',{'form':form})
else:
    if id==0:
        form = EmployeeForm(request.POST)
    else:

        employee = Employee.objects.get(pk=id)
        if employee in request.user.employee.all():
            form = EmployeeForm(request.POST,instance=employee)
    if form.is_valid():
        n = form.cleaned_data["name"]
        t = Employee(name=n)
        t.save()
        request.user.employee.add(t)

    return redirect('/employee')

在views.py中

def employee_form(request,id=0):
  if request.method == 'GET':
    if id == 0:       
        req = request.user.designation.all() //but here you are passing queryset    
        form = EmployeeForm(req)

所以代替form = EmployeeForm(req)使用form = EmployeeForm(request)form = EmployeeForm(request.user)

改變

form = EmployeeForm(req)

form = EmployeeForm(request)

您的Employee表單需要一個請求對象作為參數,但您向它傳遞了一個Designations

感謝大家的回復。 我已經設法消除了錯誤。 我沒有在 POST 方法中傳遞請求參數

視圖.py

form = EmployeeForm(request,request.POST)

暫無
暫無

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

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