我已经按照本教程
成功地在我的django项目中集成了弹性搜索elastic search with django the easy way
我有以下模型结构,
class Product(models.Model):
product_id = models.IntegerField(default=0)
product_name = models.CharField(max_length=100)
description = models.CharField(max_length=500, null=True, blank=True)
product_tag = models.ManyToManyField(Tag)
product_unit = models.ForeignKey(Unit)
def __str__(self):
return str(self.product_name)
class ProductKeyword(models.Model):
name = models.CharField(max_length=100)
product = models.ManyToManyField(Product, related_name="products")
date_created = models.DateTimeField(auto_now_add=True)
date_updated = models.DateTimeField(auto_now=True)
def __str__(self):
return str(self.name)
def search_indexing(self):
obj = ProductKeyWordIndex(
meta={'id': self.id},
name=self.name,
product=self.product.product_name,
date_created=self.date_created,
date_updated=self.date_updated,
)
obj.save()
return obj.to_dict(include_meta=True)
我在search_indexing
模型中为弹性搜索索引创建了ProductKeyword
方法。
当我尝试创建新的ProductKeyword
对象时,引发以下错误,
AttributeError: 'ManyRelatedManager' object has no attribute 'product_name'
在search_indexing
方法,我正在索引self.product.product_name
,其中
self.product
字段是m2m
字段,相同的方法适用于foreign field
。
我尝试通过更新search_indexing
方法来解决问题,
def search_indexing(self):
obj = ProductKeyWordIndex(
meta={'id': self.id},
name=self.name,
product=self.product.product_set.all(),
date_created=self.date_created,
date_updated=self.date_updated,
)
obj.save()
return obj.to_dict(include_meta=True)
但提出以下错误,
AttributeError: 'ManyRelatedManager' object has no attribute 'product_set'