Как дополнительно уменьшить SearchQuerySet на основе общего атрибута M2M, чтобы я мог запрашивать все объекты, где небо = синий?
Назначить ObjectA:
Property → property_definition = "sky" value = "blue"
Property → property_definition = "current_color" value = "red"
Назначить ObjectB:
Property → property_definition = "sky" value = "red"
Property → property_definition = "current_color" value = "blue"
Это должно привести к одному и только одному ответу (ObjectA), но я получаю 2, потому чтошаблоны видят оба свойства.
Может кто-нибудь пролить свет на то, как сузить эти результаты.Поскольку SearchQuerySet не поддерживает remove (), я не могу опубликовать их и не могу придумать, как это сделать ??
Помогите, пожалуйста !!
--- models.py ---
DATA_CHOICES = ((u'string', u'string'), (u'integer', u'integer'), (u'real', u'real'), (u'boolean', u'boolean'))
class PropertyDefinition(models.Model):
name = models.CharField(unique=True, max_length=255)
datatype = models.CharField(max_length=24, choices=DATA_CHOICES)
class Property(models.Model):
property_definition = models.ForeignKey(PropertyDefinition)
value = models.CharField(max_length=255)
class ObjectA(models.Model):
properties = model.ManyToManyField(Property)
name = models.CharField(unique=True, max_length=255)
class ObjectB(models.Model):
properties = model.ManyToManyField(Property)
name = models.CharField(unique=True, max_length=255)
--- search_indexes.py ---
class ObjectAIndex(indexes.BasicSearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.CharField(model_attr='name')
def get_model(self):
return ObjectA
class ObjectBIndex(ObjectAIndex):
def get_model(self):
return ObjectB
--templates (identical but named appropriately )--
{{object.name}}
{% for property in object.properties %}
{{ property.property_definition.name }} {{ property.value }}
{% endfor %}
Большое спасибо !!