Я пытаюсь создать модель для Django, который выглядит следующим образом:создания модели 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. Я что-то пропустил?
уникального = True не позволит мне иметь два поля совместно уникальный (помните, ни устройство, ни имя поле должно быть уникальным, взятыми самостоятельно), и я не вижу, как OnetoOneField помогает – Habfast
Да, но У устройства много свойств, поэтому OnetoOneField определенно не тот. Но спасибо большое! – Habfast
OneToOne предназначен для случаев, когда вы буквально хотите, чтобы объект ONE имел ТОЛЬКО ОДИН, соответствующий другому объекту. Он хочет, чтобы объект ONE имел несколько других совпадающих объектов, но хочет удостовериться, что эти соответствующие объекты не имеют одинакового значения «имя». –