Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как реализовать сложный запрос для Django Paginator ? [RSS Feed]

#1 Июль 8, 2012 20:39:59

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Как реализовать сложный запрос для Django Paginator ?

Добрый вечер. Подскажите, как быть в таком случае.
Есть таблицы:
blog_post
blog_category
blog_tag
blog_post_tag

Возможно ли с помощью Django ORM сделать запрос для пагинатора.

В таком запросе, получаю посты и название категории к данному посту

Post.objects.filter(category__name__exact="Python")

А как быть если еще нужно список тегов ?



Отредактировано Saturn (Июль 8, 2012 20:41:10)

Офлайн

#2 Июль 9, 2012 05:27:53

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как реализовать сложный запрос для Django Paginator ?

Давай сюда код моделей, иначе совершенно не понятно, какие связи между моделями.
Пока могу лишь сказать:
>>>Возможно ли с помощью Django ORM сделать запрос для пагинатора.
Да.



Офлайн

#3 Июль 9, 2012 10:22:06

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Как реализовать сложный запрос для Django Paginator ?

FishHook ,
Код модели:

from django.db import models
# Create your models here.
class Category(models.Model):
    name = models.CharField(max_length=100)
    date = models.DateField('auto_now_add')
    see = models.BooleanField()
    
    def __unicode__(self):
        return self.name
    
class Tag(models.Model):
    name = models.CharField(max_length=100)
    date = models.DateField()
    see = models.BooleanField()
    
    def __unicode__(self):
        return self.name
class Post(models.Model):
    category = models.ForeignKey(Category)
    tag = models.ManyToManyField(Tag)
    date = models.DateField('auto_now_add')
    title = models.CharField(max_length=150)
    description = models.TextField(max_length=1000)
    text = models.TextField()
    see = models.BooleanField()
#    img = models.ImageField(upload_to='images')
    
    def __unicode__(self):
        return self.title
    
    #  sorted by id DESC
    class Meta:
        ordering = ['-id']
    
    
class Comment(models.Model):
    post_id = models.IntegerField()
    name = models.CharField(max_length=100)
    email = models.EmailField()
    text = models.TextField()
    see = models.BooleanField() 
    date = models.DateField(auto_now=True)
    
    def __unicode__(self):
        return self.name



Офлайн

#4 Июль 9, 2012 11:00:48

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как реализовать сложный запрос для Django Paginator ?

posts=Post.objects.filter(category__name__exact="Python")

Saturn
А как быть если еще нужно список тегов ?
tags=post.tag.all()



Офлайн

#5 Июль 9, 2012 11:32:48

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Как реализовать сложный запрос для Django Paginator ?

tags=post.tag.all()

А можно подробней, не пойму что с этим делать.



Офлайн

#6 Июль 9, 2012 11:50:55

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как реализовать сложный запрос для Django Paginator ?

Saturn
Добрый вечер. Подскажите, как быть в таком случае.
Есть таблицы:
blog_post
blog_category
blog_tag
blog_post_tag

Возможно ли с помощью Django ORM сделать запрос для пагинатора.

В таком запросе, получаю посты и название категории к данному посту
Post.objects.filter(category__name__exact="Python")

А как быть если еще нужно список тегов ?
Где нужно то, в шаблоне или в фильтре?



Офлайн

#7 Июль 9, 2012 12:03:47

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Как реализовать сложный запрос для Django Paginator ?

FishHook, , будьте добры, ответьте на пару вопросов (которые меня очень волнуют)
1. Можно с шаблона сделать запрос в БД, если да то как бы он выглядел
2. Как можно в Django shell посмотреть такой запрос

>>> from blog.models import Post
>>> a = Post.objects.all()
(я пробовал for post in a: print(post) но не выходит, хотя len(a) выводит количество постов )

Где нужно то, в шаблоне или в фильтре?
В фильтре, если такое можно



Офлайн

#8 Июль 9, 2012 12:48:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как реализовать сложный запрос для Django Paginator ?

Saturn
FishHook, , будьте добры, ответьте на пару вопросов (которые меня очень волнуют)
2. Как можно в Django shell посмотреть такой запрос
>>> from blog.models import Post
>>> a = Post.objects.all()
(я пробовал for post in a: print(post) но не выходит, хотя len(a) выводит количество постов )
ХЗ как ты пробовал
>>> b=Child.objects.all()
>>> b
[<Child: фывфыв фыв ываыв>, <Child: ываыва ываыва ываывпва>, <Child: вкапывап ывапывапывап ывапывап>, <Child: Камалов Сергей Петрович>, <Child: Петров Петро Петрович>, <Child: Сергеева Гульнара Сергеевна>]
>>> for i in b:
...     print i
... 
фывфыв фыв ываыв
ываыва ываыва ываывпва
вкапывап ывапывапывап ывапывап
Камалов Сергей Петрович
Петров Петро Петрович
Сергеева Гульнара Сергеевна
>>> 



Офлайн

#9 Июль 9, 2012 12:51:58

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как реализовать сложный запрос для Django Paginator ?

Saturn
В фильтре, если такое можно
class Child(models.Model):
......
     relatives=models.ManyToManyField(Relative, verbose_name=u'Родственники')

>>> d=Child.objects.filter(relatives=2)
>>> d
[<Child: ываыва ываыва ываывпва>, <Child: фывфыв фыв ываыв>]
>>> 



Офлайн

#10 Июль 9, 2012 12:53:13

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Как реализовать сложный запрос для Django Paginator ?

Saturn
1. Можно с шаблона сделать запрос в БД, если да то как бы он выглядел
Из шаблона запрос в БД? Нет, так делать нельзя.



Офлайн

  • Начало
  • » Django
  • » Как реализовать сложный запрос для Django Paginator ? [RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version