3

次のような 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()

ただし、データの整合性を保つため、1 つのデバイスに同じ名前の 2 つのプロパティを設定することはできません。そのため、DeviceProperty のデバイス フィールドと名前フィールドを合わせて一意にする必要があります。

これを実現する簡単な方法は、2 つのフィールドに複合主キーを設定することですが、これにはいくつかの問題が発生し、さらに重要なことに、Django ではサポートされていません。

これについては、Django のドキュメントで何も見つかりませんでした。私は何かを逃したことがありますか?

4

1 に答える 1

3

unique_togetherはあなたが望むものです。

class DeviceProperty(Model):
    …
    class Meta:
        unique_together = ['device', 'name']
于 2013-02-25T10:30:37.550 に答える