Имея модель po
с ManyToManyField
по имени Order
.Django: получение элемента FIRST, принадлежащего объекту модели в ManyToManyField
Я рассматриваю несколько вариантов, в том числе следующих решений:
po.Orders.all()[0].itemname
, но я не уверен, если это решение будет дорого в основном ее выполнение запроса для всей таблицы затем отфильтровать первый элемент (или нет?) ,
Второе решение
po.Orders.get(pk=1).itemname
Это один, кажется, менее дорогой, но не работает, потому что его не возможно знать pk
перед рукой.
Мне интересно, есть ли другие решения, которые получат ЛЮБОЙ элемент, имеющий отношение ManyToMany к объекту po
?
Ваше первое решение вполне оптимально. Он выполняет 'LIMIT' в запросе и, следовательно, довольно эффективен – karthikr
Я бы предложил использовать' .first() '. Это не было частью ORM Django два года назад. Это должно быть быстрее, чем ваш первый вариант, и делать то, что вы хотели сделать во втором варианте. –