Я думаю, что это может быть больше SQL, чем Django, но Django - это то, над чем я работаю. Я пытаюсь создать объектную модель, которая может иметь много свойств, но ограничена только одним типом свойства наобъект.
Скажем, у нас есть 3 типа свойств:
Предположим, у меня естьобъект (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
на имя объекта и тип свойства.
Кстати - это похожена этот пост но они использовали через который я не уверен, что мне нужно ??
Спасибо !!