2010-07-24 3 views
1

Например, у меня есть два объекта модели: Person и Address. Адрес имеет ссылку на идентификатор Person. Как выглядит запрос, который вытаскивает их вместе как один объект, или это невозможно сделать с Django?Можно ли объединить типы моделей в Django в один объект?

+0

Этот вопрос слишком расплывчатый. Предоставьте более подробную информацию. – joel3000

+0

Ответ ниже и комментарий содержат все необходимые данные. Его пример кода - это именно то, что у меня есть, но его решения недостаточно, потому что мне нужно обратное направление. – Rhubarb

+1

Редактирование вашего вопроса для обеспечения большей ясности (в комплекте с примерами) поможет вам получить более качественные ответы, вместо того чтобы люди должны угадать, что вы пытаетесь спросить. –

ответ

1

Прочтите Django docs on related objects. Переход от лица к связанным адресам эквивалентен переходу от блога к связанным с ним Записям в примерах.

Если у вас есть лицо, вы можете сделать person.address_set.all(), чтобы получить все адреса для этого человека.

Если каждый человек имеет только один адрес используйте OneToOneField, а затем вы можете использовать person.address, чтобы получить адрес.

2

Я не совсем уверен, что вы пытаетесь спросить, но я дам ему шанс.

я буду считать, что ваши модели выглядеть примерно так:

class Person(models.Model) 
    first_name = models.CharField() 
    last_name = models.CharField() 

class Address(models.Model) 
    person = models.ForeignKey(Person) 
    street = models.CharField() 
    city = models.CharField() 
    state = models.CharField() 

Теперь, получить адрес:

address = Address.objects.get(id=address_id) 

Затем вы можете ссылаться на человека, как так:

address.person.first_name 
+0

Правильно, но моя проблема в том, что я не знаю адрес, я знаю человека. Поэтому мне нужно найти адрес для человека или, желательно, иметь возможность ссылаться на адрес лица. – Rhubarb

+1

В этом случае вы можете сделать что-то вроде. адрес = Address.objects.all() фильтр (человек = человек) Или, если вы просто есть человек идентификатор, что-то вроде:.. адреса = Address.objects.all() фильтр (person__id = person_id) – ablerman

Смежные вопросы