我使用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'))
答案 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",)