Django 值错误:无法将queryset分配给属性它必须是实例

Django 值错误:无法将queryset分配给属性它必须是实例,django,django-models,Django,Django Models,我有模特 class employees(models.Model): emp_id=models.PositiveIntegerField() emp_name = models.CharField(max_length = 100) emp_lname = models.CharField(max_length = 100) emp_loc=models.CharField(max_length=5,choices=LOCATION) manager_id=models.

我有模特

class employees(models.Model):
  emp_id=models.PositiveIntegerField()
  emp_name = models.CharField(max_length = 100)
  emp_lname = models.CharField(max_length = 100)
  emp_loc=models.CharField(max_length=5,choices=LOCATION)
  manager_id=models.ForeignKey('self',null=True,blank=True)  

class leave(models.Model): 
  employee = models.ForeignKey(employees, on_delete=models.CASCADE, default='1')
  start_date = models.DateField()
  end_date = models.DateField()
  status=models.CharField(max_length=1,choices=LEAVE_STATUS,default='P')
  ltype=models.CharField(max_length=2,choices=LEAVE_TYPE)
  message=models.CharField(max_length=500,blank=True)  

class notify(models.Model):
  sender_id=models.ForeignKey(leave, related_name='%(class)s_sendername')
  receiver_id=models.ForeignKey(leave,related_name='%(class)s_receivername')
  date_time=models.DateTimeField()
我有意见

 def accept(request):
   approved_emp_id=leave.objects.filter(id=accept_id);
approving_emp_id=leave.objects.filter(employee__emp_id=request.user.username);
accept_notify=notify(sender_id=approving_emp_id,  receiver_id=approved_emp_id,date_time=datetime.datetime.now(),viewed='N');
accept_notify.save()
当我想将值保存到数据库时,我得到的错误是
ValueError:无法分配“”:“notify.sender\u id”必须是“leave”实例。


我哪里出错了
approved\u emp\u id
approved\u emp\u id
都是只离开实例。

当参数应该是实例时,您正在传递一个
QuerySet
QuerySet
是实例列表。只传递一个实例。使用
leave.objects.get()
而不是
leave.objects.filter()

返回一个实例,其中返回一个
QuerySet

def accept(request):
    approved_emp_id = leave.objects.get(id = accept_id)
    approving_emp_id = leave.objects.get(employee__emp_id = request.user.username)
    accept_notify = notify(sender_id = approving_emp_id, receiver_id = approved_emp_id, date_time = datetime.datetime.now(), viewed = 'N')
    accept_notify.save()
def accept(request):
    approved_emp_id = leave.objects.filter(id = accept_id)[0]
    approving_emp_id = leave.objects.filter(employee__emp_id = request.user.username)[0]
    accept_notify = notify(sender_id = approving_emp_id, receiver_id = approved_emp_id, date_time = datetime.datetime.now(), viewed = 'N')
    accept_notify.save()
另一种方法是
QuerySet

def accept(request):
    approved_emp_id = leave.objects.get(id = accept_id)
    approving_emp_id = leave.objects.get(employee__emp_id = request.user.username)
    accept_notify = notify(sender_id = approving_emp_id, receiver_id = approved_emp_id, date_time = datetime.datetime.now(), viewed = 'N')
    accept_notify.save()
def accept(request):
    approved_emp_id = leave.objects.filter(id = accept_id)[0]
    approving_emp_id = leave.objects.filter(employee__emp_id = request.user.username)[0]
    accept_notify = notify(sender_id = approving_emp_id, receiver_id = approved_emp_id, date_time = datetime.datetime.now(), viewed = 'N')
    accept_notify.save()
使用
leave.objects.get()
而不是
leave.objects.filter()