【问题标题】:DRF Haystack include entire object in resultDRF Haystack 在结果中包含整个对象
【发布时间】:2016-02-08 16:59:30
【问题描述】:

我正在使用 DRF haystack 通过 elasticsearch 后端进行搜索。

笔记可以有 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'))

【问题讨论】:

    标签: django-rest-framework django-haystack


    【解决方案1】:

    我知道这是一个很老的问题,但是我传统上使用常规 DRF 执行此操作的方式是为 Note 创建一个序列化程序,并为照片创建一个序列化程序(假设一张照片可以有多个笔记,因为模型看起来表示)。

    在 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",)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 2023-01-05
      相关资源
      最近更新 更多