【发布时间】:2011-07-13 23:50:58
【问题描述】:
我认为这可能比 Django 更多 SQL,但 Django 是我正在工作的。我想做的是想出一个对象模型,它可以有许多属性,但每个属性类型仅限于 1 个目的。
假设我们有 3 种属性类型:
- is_cool
- is_happy
- is_mean
假设我有一个对象 (MyObject),它可以应用 * (0-All) 的这些属性,但每个属性只有一个。
所以我认为这个图表如下(如果我错了请纠正我):
在 Django 中,我正在努力解决这个限制。我想要它在数据库级别,即使用unique_together。
这就是我所拥有的......
PROP_VALUE_CHOICES = (("URL", "url"),
("Boolean", "bool"),
("String", "char"),
("Person", "person"))
class PropertyType(models.Model):
name = models.CharField(max_length=32)
value_type = models.CharField(max_length=32, choices=PROP_VALUE_CHOICES)
class Property(models.Model):
type = models.ForeignKey(PropertyType)
value = models.CharField(max_length=32)
class MyObjectA(models.Model):
properties = models.ManyToManyField(Property, related_name="MyObjectA")
class MyObjectB(models.Model):
properties = models.ManyToManyField(Property, related_name="MyObjectB")
所以问题:
- 上图是记录我想要完成的工作的正确方法吗?
- 我的模型不完整 - 我缺少什么以及在哪里对对象名称和属性类型应用
unique together约束。
顺便说一句 - 这类似于 this post 但他们使用了一个我不确定我是否需要的??
谢谢!!
【问题讨论】:
标签: mysql django-models django-orm