Python 使用相关_名称返回queryset在django中不工作?

Python 使用相关_名称返回queryset在django中不工作?,python,django,django-views,foreign-keys,Python,Django,Django Views,Foreign Keys,这里我使用两个模型。两个模型都与用户模型有ForeignKey关系。在这里我想查询员工,由审核和发送,我试着这样做。当我进行筛选时,它返回queryset,但当我使用related\u name进行查询时,它会抛出AttributeError 我该怎么做 `异常值: “Leave”对象没有“Review\u by”属性 models.py class Leave(models.Model): staff = models.ForeignKey(get_user_model(),on_de

这里我使用两个模型。两个模型都与
用户
模型有
ForeignKey
关系。在这里我想查询
员工
审核和
发送,我试着这样做。当我进行筛选时,它返回queryset,但当我使用
related\u name
进行查询时,它会抛出
AttributeError

我该怎么做

`异常值: “Leave”对象没有“Review\u by”属性

models.py

class Leave(models.Model):
    staff = models.ForeignKey(get_user_model(),on_delete=models.CASCADE,related_name='staff_leave')
    organization = models.ForeignKey(Organization,on_delete=models.CASCADE,related_name='staff_leave')
    sub = models.CharField(max_length=300)
    msg = models.TextField()
    start_day = models.DateField()
    end_day = models.DateField()
    is_reviewed_by = models.ForeignKey(get_user_model(),on_delete=models.CASCADE,related_name='reviewed_by',blank=True,null=True)

class LeaveReply(models.Model):
    staff = models.ForeignKey(get_user_model(),on_delete=models.CASCADE,related_name='leave_status')
    leave = models.ForeignKey(Leave,on_delete=models.CASCADE,related_name='leave_status')
    sub = models.CharField(max_length=300,blank=True,null=True)
    msg = models.TextField(blank=True,null=True)
    sent_on = models.DateTimeField(auto_now_add=True)
    sent_by = models.ForeignKey(get_user_model(),on_delete=models.CASCADE,related_name='sent_by')
views.py

def leave_detail(request, pk):
    leave = get_object_or_404(Leave, pk=pk)
    reviewers = leave.reviewed_by.all() # not working
    staffs = leave.staff_leave.all() # does not works

    staffs = Leave.objects.filter(staff=leave.staff) # this works
    reviewers = Leave.objects.filter(is_reviewed_by=leave.is_reviewed_by)  # works

    reply_sender = LeaveReply.objects.filter(sent_by=leave.is_reviewed_by) #works 

    reply_sender = leave.sent_by.all() # doesn't works

编辑的答案

型号:

class Leave(models.Model):
    staff = models.ForeignKey(get_user_model(),on_delete=models.CASCADE,related_name='staff_leave')
    organization = models.ForeignKey(Organization,on_delete=models.CASCADE,related_name='staff_leave')  
    is_reviewed_by = models.ForeignKey(get_user_model(),on_delete=models.CASCADE,related_name='reviewed_by',blank=True,null=True) 
我认为这个模型是针对员工的休假细节的

不工作代码:

reviewers = leave.reviewed_by.all() # not working
staffs = leave.staff_leave.all() # does not works
这是为正在休假的员工和审查休假申请的人员准备的。这两个字段都与用户模型相关。如果我们有
Leave
模型的实例(即
Leave=get\u object\u或_404(Leave,pk=pk)
),那么我们可以通过以下方法得到这两个:

staffs = leave.staff # for person who will be on leave
reviewers = leave.is_reviewed_by # for the person who reviewed the leave
额外的

如果我们有一个用户实例(
User=get\u object\u或_404(User,pk=pk)
),我们想知道他已经休假了多少次,那么我们可以使用相关名称:

no_of_leaves_itaken = user.staff_leave.all()
或者他回顾了多少次假期:

no_of_leaves_reviewed = user.staff_leave.all()

你有点困惑。这里与相关的_名称无关


你有一个离开的对象。如错误所述,休假项目没有“审阅者”
、“发送者”或“员工休假”属性。他们已经由和员工审查了;唯一由对象发送的
是在LeaveReply对象上。

我如何获得查询,然后是哪个查询?正如我所说,对于前两个,您应该只使用您在模型上定义的属性。我不知道您希望如何处理由
发送的
。请您添加一些解释,说明上面的代码片段是如何试图回答这个问题的?您好,AndrewNaguib,很抱歉这样回答。我编辑了我的答案。谢谢你的通知。