说我有这些伪模型
class Client(models.Model
name = ...
class Property(models.Model):
client = models.ForeignKey(Client ...)
name = ...
type = ...
value = ...
例如,我有2个客户。每个都有2个属性记录。两个客户端可能拥有相同的属性,但是具有唯一的属性记录,因为每个客户端可能拥有属性(值)的不同部分。
如何产生结果,使其返回类似以下内容的结果:
属性A,{clientA,值},{clientB,值}
属性B,{clientA,值}
根据属性的名称和类型将属性分组的地方?
非常感谢
iodb您是否建议这样?
class Client(models.Model
name = ...
class Property(models.Model):
name = ...
type = ...
class PropertyValue(models.Model):
client = models.ForeignKey(Client ...)
property = models.ForeignKey(Property ...)
value = models.IntegerField(...)
答案 0 :(得分:3)
您的模型似乎不适合您要存储的数据和想要获得的结果。您需要拆分属性和值,以便在Property和Client之间以PropertyValue作为中间类存在多对多关系。
class Client(models.Model):
name = ...
properties = models.ManyToManyField('Property', through='PropertyValue')
class PropertyValue(models.Model):
client = models.ForeignKey('Client' ...)
property = models.ForeignKey('Property'...)
value = ...
class Property(models.Model):
name = ...
type = ...
现在,您可以遍历“属性”,并为每个输出的每个客户端提供值:
{% for property in properties %}
{{ property.name }}
{% for value in property.propertyvalue_set.all %}
{{ value.client.name }}
{{ value.value }}
{% endfor %}
{% endfor %}