Как отфильтровать два модельных объекта по времени? - PullRequest
0 голосов
/ 24 мая 2011

models.py:

class Post(models.Model):
  msg=models.TextField("Shout it out!:")
  college=models.ForeignKey('College')
  time=models.DateTimeField(auto_now_add=True)

class Feed(models.Model):
  gender = models.CharField(max_length=5, choices=GENDER_CHOICES, default='girl')
  location=models.CharField(max_length=25, choices=LOCATION_CHOICES)
  msg = models.TextField("Message")
  email = models.EmailField("Email:",blank=True, null = True)
  college=models.ForeignKey('College')
  time=models.DateTimeField(auto_now_add=True)

В шаблонах я хочу показывать и ленты, и записи вместе в потоке, отфильтрованном по времени. Как мне это сделать? Как мы можем отфильтровать оба объекта модели по времени? Является ли это возможным? нужна помощь. Спасибо.

1 Ответ

1 голос
/ 24 мая 2011

Вы можете рассмотреть возможность создания базового класса, содержащего общие поля. Затем вы можете выполнить запрос, аналогичный BaseFeed.objects.all (). Order_by ('time'), и выполнить итерацию по нему в своем шаблоне, но вы можете обработать каждый элемент результата как тип, который на самом деле.

class BaseFeed(models.Model):
    ....
    msg = models.TextField("Message")
    college=models.ForeignKey('College')
    time=models.DateTimeField(auto_now_add=True)
    ....

Вот некоторые фрагменты, на которые я всегда ссылаюсь, когда делаю что-то подобное.

http://www.djangosnippets.org/snippets/1034/

http://www.djangosnippets.org/snippets/1031/

http://adam.gomaa.us/blog/2009/feb/16/subclassing-django-querysets/

...