我有以下django型号:
class Entity(models.Model):
name = models.CharField(max_length=255)
class EntityProp(models.Model):
entity = models.ForeignKey('Entity')
key = models.CharField(max_length=255)
value = models.CharField(max_length=255, blank=True, default='')
我想为Entity
制作一个独特的钥匙,包括name
和相关的EntityProp
。例如,我想要两个具有相同名称和不同相关EntityProp
实例的实体不同。但是如果他们有相同的名字和Entity
实例,我想保持相同的EntityProp
。有没有一种优雅的方式在Django中做到这一点?
作为一种保留方式,我可以在Entity
中创建一个名为props_hash
的附加字段,其中包含所有相关实例的标识符的哈希值,但我认为支持这种结构并不容易。所以我相信有更好的方法。
干得好
class Entity(models.Model):
name = models.CharField(max_length=255)
class EntityProp(models.Model):
entity = models.ForeignKey('Entity')
key = models.CharField(max_length=255)
value = models.CharField(max_length=255, blank=True, default='')
class Meta:
unique_together = ('key', 'entity')
资料来源:https://docs.djangoproject.com/en/dev/ref/models/options/#unique-together