gpt4 book ai didi

python - Django Custom Manager(获取Boss的下属)

转载 作者:行者123 更新时间:2023-12-02 20:11:05 25 4
gpt4 key购买 nike

我有两个模型。

老板:

class Boss(models.Model):
name = models.CharField(max_length=200, blank=False)
company = models.CharField(max_length=200, blank=False)

和员工:

class Employee(models.Model):
boss = models.ForeignKey(Boss, on_delete=models.CASCADE)
name = models.CharField(max_length=200, blank=False)
company = models.CharField(max_length=200, blank=False)

我想创建一个自定义管理器来获取老板的员工,它可能会像这样工作:

b1 = Boss.objects.first() 
b1.subordinates.all()

我不知道如何实际实现这一点。我知道我可以做这样的事情:

class SubordinatesManager(Manager):
def get_queryset:
return super().get_queryset().filter(boss=b1)

但这仅适用于 Employee 类。

最佳答案

你基本上已经有了,你可以这样查询:

my_boss.employee_set.all()

您可能希望通过更改 ForeignKeylated_name 属性来更改名称 employee_set:

class Employee(models.Model):
boss = models.ForeignKey(Boss, on_delete=models.CASCADE<b>, related_name='subordinates'</b>)
name = models.CharField(max_length=200, blank=False)
company = models.CharField(max_length=200, blank=False)

在这种情况下,查询如下:

my_boss.subordinates.all()

您还可以执行额外的过滤、注释等,例如:

my_boss.subordinates.filter(name__contains='John')

获取所有以 my_boss 作为老板、名字中包含 John员工

关于python - Django Custom Manager(获取Boss的下属),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53620847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com