これはDjangoよりもSQLかもしれませんが、Djangoは私が取り組んでいることです。私がやっていることは、多くのプロパティがオブジェクトごとに1つのプロパティタイプに制限されています。unique_togetherを使ったdjangoの多対多リレーションシップ
は、我々は3つのプロパティタイプを持っていると言う:
- is_cool
- is_happy
- is_mean
私は*を持つことができるオブジェクト(MyObjectに)(0-すべて)のを持っていると仮定しますこれらのプロパティはそれに適用されますが、それぞれのプロパティは1つのみです。
だから私は(私が間違っている場合は、私を修正してください)以下のようにこれが図解されていると思う:
ジャンゴで私はこの制約をstugglingています。 dbレベル、つまり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
という制約が適用されます。
BTW - これはthis postと似ていますが、私が必要としているかどうかはわかりません。
ありがとうございます!