Найти - Пользователи
Полная версия: Когда есть ключ ForeignKey
Начало » Django » Когда есть ключ ForeignKey
1 2
dissdoc
Всем привет. Есть вопрос больше алгоритмический, нежели прикладной.
Смотрите. Есть у меня две модели TestParent и TestChild
У TestChild есть ключ ForeignKey(TestParent)

Так вот. Когда я делаю вид (views.py) я ищу в БД всех детей по id-родителя. что-то вроде вот такого
TestChild.objects.get(parent_id=id)
Все работает. А может ли быть способ… более.. грамотный что ли. Ведь мы заводим ключ ForeignKey. А в моем случае получается что он и не нужен вообще как таковой.
tezro
- parent 1
-- child 1
-- child 2
-- child 3

- parent 2
-- child 4
-- child 5
-- child 6
TestChild.objects.get(parent_id=id) даст вам ошибку, так как вернётся несколько Child.

Если вы имеете ввиду грамотный, то может это: Child.objects.filter(parent = Parent.object.get(pk = 1))
dissdoc
Спасибо за исправление ошибки)) Я только что в доках это нашел. Это тоже имеет место быть.
Но меня также волнует вопрос другой. Мы получается все равно игнорируем все ключи когда запрашиваем из БД данные.

Я просто думал есть способ более…хм.. объектный что ли. Ведь мы в модели указываем ключи,а значит если нашли родителя, то и дети автоматически подхватываются. Образно говоря что-то вроде вот такого
parent = Parents.objects.get(id=id)
children = parent.get_child()
Что-то вроде такого разве не реализовано в джанге? Меня это больше интересовало :) Я надеюсь вы поняли,ч то я имею ввиду. Ну думал что уже автоматизировано все. Разве нет?
tezro
dissdoc
Спасибо за исправление ошибки)) Я только что в доках это нашел. Это тоже имеет место быть.
Но меня также волнует вопрос другой. Мы получается все равно игнорируем все ключи когда запрашиваем из БД данные.

Я просто думал есть способ более…хм.. объектный что ли. Ведь мы в модели указываем ключи,а значит если нашли родителя, то и дети автоматически подхватываются. Образно говоря что-то вроде вот такого
parent = Parents.objects.get(id=id)
children = parent.get_child()
Что-то вроде такого разве не реализовано в джанге? Меня это больше интересовало :) Я надеюсь вы поняли,ч то я имею ввиду. Ну думал что уже автоматизировано все. Разве нет?
http://docs.djangoproject.com/en/dev/ref/models/querysets/#id4 - оно?
dissdoc
Похоже оно, сейчас буду пробовать и проверять :)
Спасибо за оказываемую помощь.
dissdoc
Все то, только такое возможно от детей к родителю, а не наоборот. Эх…
Ну придется действовать по вашему первому совету.
Александр Кошелев
dissdoc
Все то, только такое возможно от детей к родителю, а не наоборот. Эх…
Читайте документацию.
tezro
dissdoc
Все то, только такое возможно от детей к родителю, а не наоборот. Эх…
Ну придется действовать по вашему первому совету.
child = Child.objects.select_related().get(pk=1)
parent = child.parent
http://docs.djangoproject.com/en/dev/topics/db/queries/#related-objects
parent = Parent.objects.get(pk=1)
children = parent.child_set.all()
child = parent.child.objects.get(pk=1)
Ну в доке же есть.
dissdoc
Ну это я видел) В итоге объекты получаем по запросу, а не по ссылке :) Вот что я имел ввиду)) Это у родителя
А у детей как раз по ссылке)))
А вы мне как раз то же самое написали, что я и писал)))
tezro
dissdoc
Ну это я видел) В итоге объекты получаем по запросу, а не по ссылке :) Вот что я имел ввиду)) Это у родителя
А у детей как раз по ссылке)))
А вы мне как раз то же самое написали, что я и писал)))
Тогда, я не понимаю.
children = parent.get_child()
и
children = parent.child_set.all()
Не катит?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB