Создание и выборка дочерних записей n Django - PullRequest
0 голосов
/ 30 июня 2011

У меня есть две модели, такие как:

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 ]

1 голос
/ 30 июня 2011

Ни то, ни другое =)

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)
0 голосов
/ 30 июня 2011

Для первого вы можете просто сделать

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

, предполагая, что 1 - это идентификатор менеджера, для которого вам нужно получить сотрудников.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...