在Django中创建和获取子记录

时间:2011-06-30 17:28:18

标签: python django

我有两个模型,如:

class Manager(models.Model)
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=65535, null=False)

class Employee(models.Model)
    id = models.AutoField(primary_key=True)
    manager = models.ForeignKey(Manager)
    name = models.CharField(max_length=65535, null=False)

为经理取得所有员工时,这是正确的方法:

mgr = Manager.objects.get(id=1)
emps = Employees.objects.get(manager=mgr)

mgr = Manager.objects.get(id=1)
emps = Employees.objects.get(manager=mgr.id)

创建父对象和子对象时,可以这样做:

emp = Manager.objects.create(name='John').employees.create(name='Johns Slave')

2 个答案:

答案 0 :(得分:1)

两者都不=)

mgr = Manager.objects.get(id=1)
emps = mgr.employee_set.all()

对于你的第二个。不,你会分开需要它们,就像这样:

mgr = Manager.objects.create(name='John')
emp = Employee.objects.create(name='Johns Slave', manager=mgr)

答案 1 :(得分:0)

对于第一个,你可以做到

emps = Employees.objects.filter(manager=1)

假设1是您需要检索员工的经理ID。