1. exPhpCoder

    04.07.2008

    0 ↑
    0 ↓
    У меня проблема с тем что Django шлет огромное кол-во запросов с одной страницы.

    Имеется модель:

    class Theme(models.Model):
    title = models.CharField(max_length=250,db_index=True)

    class Company(models.Model):
    name = models.CharField(max_length=250,core=True,db_index=True)
    thematic = models.ForeignKey(Theme,db_index=True,default=1)

    class Person(models.Model):
    company = models.ForeignKey(Company)
    name = models.CharField(max_length=250,core=True,db_index=True)
    tag = models.ManyToManyField(Theme)

    Django 7835.

    На странице выводится список всех Компаний и Персон определенной тематики.

    Компании связаны через FK с Темами, мне не понятно почему они не дергаются по LEFT JOIN при вынимании данных о Компании, а каждый раз посылается отдельный запрос к таблице themes.
    Можно ли как-то изменить поведение ORM, что бы он использовал JOIN.
    Как можно в данном случае подсунуть VIEW вместо таблицы Persons?

    Персоны связаны с темами M2M. Тут само-собой на каждую персону идет запрос на выборку тем. Можно ли что-то придумать?

    И вообще глобальный вопрос. Можно как-то создать свой QuerySet объект из результатов custom query или работы функции? Как результаты своих запросов отдавать в шаблоны, чтобы не иметь проблем с кодировкой?
  2. Что Вы имеете в виду под "подсунуть view"? Создаете и "подсовываете", только не вижу в этом смысла. ИМХО, в Вашем случае очень хорошо будет работать кеширование.
  3. exPhpCoder

    04.07.2008

    0 ↑
    0 ↓
    Если говорить про FK, то мне не нравится логика по которой связываются таблицы. JOIN тут уместнее.
  4. JOIN тут уместнее.

    Тут точно уместнее чуть-чуть почитать документацию ;) Ну и конечно не забывать про кеширование.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.