嘿,这个很快。我有两个模型,Post和Term,我希望能够标记和分类(分类法)帖子以及其他(未来)模型。我的Post模型有以下字段:title、content、published(date),我的任期是这样声明的:
class Term(models.Model):
taxonomy = models.CharField(max_length=255)
name = models.CharField(max_length=255)
slug = models.SlugField(max_length=50)
然后我有一个TermRelationship模型,它将术语粘贴到post和其他模型上,如下所示:
^{pr2}$一切如期进行,但我的问题如下。我想创建一个特定类别的文章存档,并按发布日期排序。这就是我要做的:
ctype = ContentType.objects.get_for_model(Post)
relations = TermRelation.objects.filter(content_type__pk=ctype.id)
它工作得很好,虽然我猜是按关系PK排序的。当我尝试执行以下操作时:
relations = TermRelation.objects.filter(content_type__pk=ctype.id).order_by('content_object__published')
我得到一个错误,说在termlession中没有content_object字段。我知道一定有办法解决它。有什么想法吗?在
谢谢~K
是的,我对带有连接的简单SQL查询是非常正确的。实际上有一些加入。以下是对我有效的方法(django>;=1.2用于
raw()
方法)没那么难。也许我应该用术语关系的方法来总结,你觉得呢?在
更新:我确实把它包装成一个静态方法,使它更通用,可以处理不同的内容类型和排序顺序。它仍然假设存在一个名为content_type_id的字段,如果ContentType上有外键,则默认创建该字段。代码如下:
^{pr2}$据我所知,对于django,这是不可能的,因为
order_by
-参数被转换为数据库列/表,content_object
不会像这样在数据库中退出。这也是您必须使用object_id/content_type执行内容类型查找的原因。。。在相关问题 更多 >
编程相关推荐