我有一个干草堆模型,我试图通过外键上的字段(AKA Join)来订购。我知道如何使用典型的Django模型:
.order_by(' thefk__the_field&#39)
但这似乎与Haystack合作。我很好奇我会怎么做?
谢谢!
注意:
我故意没有添加Django标签,因为这个框架改变了原型Django查询行为(如上所述)。
答案 0 :(得分:1)
外键字段必须是search_indexes.py文件中的index.SearchIndex,indexes.Indexable子类的属性。
一个例子是:
class NoteTaker(models.Model):
name = models.CharField()
age = models.IntegerField()
class Note(models.Model):
notetaker = models.ForeignKey(NoteTaker, null=True)
what_was_written = models.TextField()
然后在你的search_indexes.py中:
class NoteSearchIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
age = indexes.IntegerField(model_attr='notetaker__age')
{{3}}。
在某些情况下,例如反向FK,您必须使用def prepare_FOO
,其中FOO是要编入索引的字段的名称。因此,如果您将NoteTaker编入索引而不是注意,则可以执行
def prepare_the_notes_text(self, obj):
if hasattr(obj, 'note'):
return obj.note.what_was_written
else:
return None