запросы в Джанго - PullRequest
       22

запросы в Джанго

0 голосов
/ 09 апреля 2010

Как запросить сотрудника, чтобы получить все адреса, связанные с сотрудником, Employee.Add.all() не работает ..

 class Employee():
    Add = models.ManyToManyField(Address)
    parent = models.ManyToManyField(Parent, blank=True, null=True)

class Address(models.Model):
   address_emp = models.CharField(max_length=512)
   description = models.TextField()

   def __unicode__(self):
   return self.name()

Ответы [ 3 ]

5 голосов
/ 09 апреля 2010

Employee.objects.get (рк = 1) .Add.all ()

Вам нужно показать , какого сотрудника вы имеете в виду. pk=1, очевидно, пример (сотрудник с первичным ключом, равным 1).

Кстати, существует строгое соглашение использовать строчные буквы для имен полей. Employee.objects.get(pk=1).addresses.all() будет выглядеть намного лучше.

2 голосов
/ 09 апреля 2010

Employee.Add.all() не работает, потому что вы пытаетесь получить доступ к связанному полю из Модели, и для этого типа запросов требуется экземпляр модели, как пример Людвика. Чтобы получить доступ к модели и соответствующему полю внешнего ключа в одном запросе, вы должны сделать что-то вроде этого:

Employee.objects.select_related('Add').all()

Это бы сработало.

0 голосов
/ 20 мая 2016

employee = Employee.objects.prefetch_related('Add') [emp.Add.all() for emp in employee]

prefetch_related поддерживает множество связей и кэширует набор запросов и снижает количество обращений к базе данных, следовательно, повышает производительность

...