Это зависит от того, что вы подразумеваете под «присоединиться». Вы можете получить доступ к любому из других, хотя user
и related_name
модели (по умолчанию: <lowercase class name>_set
), например ::
model1_instance.user.model2_set.all()
Или вы можете использовать пользовательский экземпляр для прямого доступа к каждому из них:
user.model1_set.all()
user.model2_set.all()
user.model3_set.all()
Вы также можете запросить эти модели через пользователя, используя обратные запросы:
User.objects.filter(model1__title='some title')
Наконец, для моделей, которые имеют только один экземпляр, например, один профиль на пользователя, вам действительно следует использовать OneToOneField
вместо ForeignKey
. Если вы сделаете это, тогда вы можете использовать select_related
для любого обратного отношения, которое является OneToOneField
(истинный SQL JOIN), например ::
User.objects.filter(model1__title='some title').select_related('model2', 'model3')
Однако select_related
будет , а не работать с обратным отношением внешнего ключа или отношениями "многие ко многим". Для этого вам придется подождать, пока Django 1.4 не выпадет с prefetch_related
.