Django模型创建联合独特的领域

时间:2013-02-25 10:25:46

标签: python django django-models data-integrity

我正在尝试为Django创建一个如下所示的模型:

class Device(Model):
    UDID = CharField(length=64, primary_key=True)
    # more irrelevant stuff

class DeviceProperty(Model):
    device = ForeignKey(Device)
    name = CharField(length=255)
    value = CharField(length=255)
    readOnly = BooleanField()

但是,出于数据完整性的原因,单个设备不应具有两个具有相同名称的属性。所以我需要将DeviceProperty的设备和名称字段联合起来。

实现这一目标的一种简单方法是在两个字段上使用复合主键,但这会引发一些问题,更重要的是Django不支持。

我在Django文档中没有找到任何相关内容。我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

unique_together就是你想要的。

class DeviceProperty(Model):
    …
    class Meta:
        unique_together = ['device', 'name']