Я пытаюсь получить множество разных таблиц, которые связаны первичными ключами и регулярными идентификаторами.
Не пытайтесь «присоединяться» к столам. Это не SQL.
Вы должны сделать несколько запросов, чтобы получать данные из разных таблиц.
Не беспокойтесь о select_related
, пока не сможете доказать, что у вас есть бутылочная шее.
Просто выполняйте различные GET из различных классов по мере необходимости.
Давайте сосредоточимся на кандидате и рейтинге.
class Rating(Model):
...
class Candidate(Model):
rating = Models.ForeignKey(Rating)
Сделайте это.
r = Rating.objects.get(id=rating_id)
c = r.candidate_set.all()
Это позволит получить рейтинг и всех кандидатов, имеющих этот рейтинг. Это - по сути - то, что такое объединение SQL: это две выборки. В ORM Django просто напишите два набора как можно проще. Пусть Django (и ваша база данных) кэширует вещи для вас.
Чтобы отобразить элементы нескольких таблиц в одной строке в форме шаблона, вы делаете это.
По мнению:
r = Rating.objects.get(id=rating_id)
return render_to_response(some_form, { 'rating':r })
В шаблоне:
Rating: {{rating}}. Candidates: {% for c in rating.candidate_set.all %} {{c}} {%endfor%}
Etc.
Вы просто "перемещаться" среди ваших объектов в шаблоне, чтобы отобразить запрашиваемую информацию.
я не включал остальную часть таблицы, которые мне нужны значения из. Как только я создам все объекты и имею все разные данные, как бы объединить их и вывести их в строках? – atomical
Если у меня есть таблица с несколькими записями, которые соответствуют возвращаемым значениям объектов рейтинга, было бы приемлемо получить всю таблицу и поместить ее в шаблон? – atomical
@atomical: Что еще вы можете сделать, кроме выборки нескольких записей и их размещения в шаблоне? Вы ** не ** собираетесь отображать несколько записей? Я не понимаю. –