属性错误|模型对象没有属性'get'



这是我的模型

class Leave_Management(models.Model):
employee = models.ForeignKey('employeeModel', on_delete=models.CASCADE)
name = models.CharField(max_length=50)
reason = models.TextField(max_length=200)
date_to = models.DateField(null=True)
date_from = models.DateField(null=True)
leave_balance = models.IntegerField(default=14)
paid_leave = models.IntegerField(default=0)
unpaid_leave = models.IntegerField(default=0)
time_generated = models.DateTimeField(auto_now_add=True)
time_approved = models.DateTimeField(null=True, blank=True)
def get_absolute_url(self):
return reverse('approve',kwargs={'pk':self.pk})
def __str__(self):
return str(self.employee)
def get_total_days(self):
dt = (self.date_to - self.date_from).days
return dt

我已经创建了上述模型的两个实例。因此,当我尝试在 Django Shell 中访问这些实例时,它工作正常

>>> form = Leave_Management.objects.all().get(pk=1)
>>> form
<Leave_Management: Emp001>

但是当我在 views.py 中尝试这样的事情时,它引发了错误 E

Exception Type: AttributeError
Exception Value:    
'Leave_Management' object has no attribute 'get'

views.py

def approve(request,pk):
form = Leave_Management.objects.get(pk=pk)
return form

我的 views.py 有什么问题吗?

您不能直接从视图中返回实例,您需要返回响应。通常通过渲染模板:

return render(request, 'mytemplate.html', {'form': form})

尽管可以想象您可以返回包装在 HttpResponse 中的表单本身:

return HttpResponse(form)

但它看起来很可怕。

(此外,您还应该考虑将事物称为它们本来的样子;模型实例不是表单。

最新更新