2014-10-14 4 views
2

Я следующий Django модели сценария:Джанго модель xor'd OneToOnes

class A(models.Model) 
    pass 

class B(models.Model) 
    a = models.OneToOne(A) 

class C(models.Model) 
    a = models.OneToOne(A) 

class D(models.Model) 
    a = models.OneToOne(A) 

Есть ли способ, чтобы гарантировать, что только один экземпляр любого данного B, C, D или объект будет указывать только на один Объект? Так, например, если есть экземпляр B, который указывает на экземпляр A, то ни один другой объект не может указывать на этот экземпляр A.

+1

Если у вас есть контроль над определениями моделей, у вас может быть более чистый способ реализации этого с наложением модели django. – XORcist

ответ

0

Вам нужно будет перепрыгнуть через некоторые обручи, чтобы сделать эту работу.

Вы можете создать собственный save метод на B, C и D, который загружает экземпляр A, к которому вы пытаетесь указать из БД и гарантирует, что ни одного случая других моделей не существует.

Смежные вопросы