0

我想要 facebook 类型的新闻提要,我需要从 2 个按时间排序的不同模型中获取数据。

模型类似于:

class User_image(models.Model):
user = models.ForeignKey(User_info)
profile_pic = models.ImageField(upload_to='user_images')
created = models.DateTimeField(auto_now_add=True)

class User_status(models.Model):
user = models.ForeignKey(User_info)
status = models.CharField(max_length=1)
created = models.DateTimeField(auto_now_add=True)

根据我的要求,我不能从这两个模型中制作一个模型。

现在我需要知道视图和模板中的简单代码,以便根据时间在新闻提要中显示个人资料图片和状态。

谢谢。

4

2 回答 2

1

最简单的存档方法是有一个基本模型,称为 Base_event,

class Base_event(models.Model):
     user = models.ForeignKey(User_info)
     created = models.DateTimeField(auto_now_add=True)

并从这个 Base 派生出你的两个模型。通过这种方式,您可以编写更少的代码,并归档您的目标。请注意,您必须做出一个实现选择:它们将如何从 base.properties 继承。我建议阅读Django 文档,以帮助您根据自己的需要做出明智的选择。

编辑:

我会注意到接受的答案有一个警告。它在 python 上而不是 mysql 上对数据进行排序,这意味着它会对性能产生影响:mysql 具有 SORT 的整个想法是避免必须命中数据库并由它们执行排序。例如,如果您只想检索排序的前 10 个元素,则使用公认的解决方案,您必须提取所有条目,然后才决定哪些是前 10 个。

像 Base_event.objects.filter().sort_by(...)[10] 这样的东西只会提取数据库的 10 个元素,而不是整个过滤表。

简单的解决方案现在变成了以后的问题。

于 2013-06-11T19:33:44.517 回答
0

尝试创建列表链之类的方法。

feed = list(chain(User_image,User_status))
feed = sorted(feed, key=operator.attrgetter('date_added'))

对于那些认为它不正确的人。 https://stackoverflow.com/a/434755/2301434

于 2013-06-11T20:27:58.967 回答