这是我的模型
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)
但它看起来很可怕。
(此外,您还应该考虑将事物称为它们本来的样子;模型实例不是表单。