Skip to main content
 首页 » 编程设计

python之Django 模型创建联合独特领域

2024年08月29日28三少

我正在尝试为 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 文档中没有找到任何关于此的内容。我错过了什么吗?

请您参考如下方法:

unique_together是你想要的。

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