Занят игрой с django, но меня, кажется, сбивает с толку одна вещь - следование отношениям с внешними ключами. Теперь у меня есть огромный опыт написания SQL, так что я могу попробовать. вернуть результат, если ORM не было.
По сути, это SQL-запрос, который я хочу вернуть
Select
table1.id
table1.text
table1.user
table2.user_name
table2.url
from table1, table2
where table1.user_id = table2.id
Мои классы моделей были определены как:
class Table1(models.Model):
#other fields
text = models.TextField()
user = models.ForeignKey('table2')
class Table2(models.Model):
# other fields
user_name = models.CharField(max_length=50)
url = models.URLField(blank=True, null=True)
Я ознакомился с документацией и справочными материалами по наборам запросов, моделям и представлениям на веб-сайте django. Но до сих пор не ясно, как это сделать.
Я также настроил URL с общим представлением списка, но хотел бы получить доступ к полю user_name из второй таблицы в шаблоне. Я попытался select_related в urls.py, а также через оболочку, но, похоже, не работает. Смотрите примеры ниже.
конфиг в URL
url(r'^$','django.views.generic.list_detail.object_list', { 'queryset': Table1.objects.select_related() }),
На скорлупе
>>> a = Table1.objects.select_related().get(id=1)
>>> a.id
1
>>> a.user_name
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'Table1' object has no attribute 'user_name'
Так в основном,
- Что я делаю не так?
- Я что-то упустил?
- Каков наилучший способ передачи полей из двух таблиц в одном и том же наборе запросов в шаблон (чтобы можно было получить доступ к полям из обеих таблиц)
- Можно ли это сделать с помощью общих представлений?