DRF Haystack在结果中包含整个对象

时间:2016-02-08 16:59:31

标签: django-rest-framework django-haystack

我使用DRF haystack进行弹性搜索后端搜索。

备注可以有0 ... n照片。

是否可以在搜索结果中包含所有照片。还是返回Note对象的整个json?

这是我的模特

class Note(activity.Activity, geoModels.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)


    created_at = geoModels.DateTimeField(auto_now_add=True)
    title = models.CharField(_('title'),
                         max_length=50)
    story = models.TextField(_('userStroy'),
                        unique=False,
                        help_text= ('story'))

class Photo(activity.Activity,geoModels.Model):

    created_at = geoModels.DateTimeField(auto_now_add=True)

    image = geoModels.ImageField(_('image'),
                          max_length=IMAGE_FIELD_MAX_LENGTH,
                          upload_to=get_storage_path)

    trip_note = geoModels.ForeignKey(TripNote,
                            null=True,
                            blank=True,
                            related_name="photos",
                            verbose_name=_('tripnote'))

1 个答案:

答案 0 :(得分:0)

我知道这是一个非常古老的问题,但我传统上用常规DRF完成此操作的方法是为Note创建一个序列化器,为Photo创建一个序列化器(假设照片可以有多个音符,因为模型似乎表示)。

在Photo序列化器中,您将表示trip_note = NoteSerializer(many = True)。

然后,使用drf-haystack文档作为指南(https://drf-haystack.readthedocs.io/en/latest/10_tips_n_tricks.html#reusing-model-serializers),您可以重用纯drf-haystack序列化程序的这个序列化程序实例,它看起来像:

class SearchSerializer(HaystackSerializerMixin, PhotoSerializer):
    class Meta(PhotoSerializer.Meta):
        search_fields=("whatever you search by",)