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

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

最佳答案

unique_together是你想要的。

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

关于python - Django 模型创建联合独特领域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15064795/

相关文章:

python - Django update_or_create(获取部分)使用相关对象作为 kwarg

javascript - Django下拉[onChange]框包含选定的值但无法获取选定的值

django - 如何防止 Django Admin 中 FK/MTM 字段的自(递归)选择

python - Django ManyToManyField 创建问题

python - joblib 中的 batch_size 和 pre_dispatch 到底是什么意思

python - Django 使用相关键连接查询

python - 如何在 Python 中使用 Tkinter 创建自定义消息框并更改消息和更改按钮状态

python - 如何将字典+列表组合成一个排序列表

django在保存文章时不添加自动递增主键id

python - Django 过滤器排除外键