Django Использование ManyToMany с другой стороны вместо ForeignKey
В конкретном приложении Django у меня есть класс DB Model A, который считается главным классом, и многие другие модели связаны с ним через отношения один к одному (как B) или один ко многим (как C). Таким образом, прямой подход к реализации такого подхода следующий:
class A(Model):
b = OneToOneField('B', on_delete=CASCADE)
# other fields
class B(Model):
# some fields
class C(Model):
a = ForeignKey(A, on_delete=CASCADE)
# other fields
Теперь, когда я хочу создать новый объект A, последовательность будет такой:
- создать
Bобъект - создайте
Aобъект и свяжите с ним созданныйBобъект - создайте объект
Cи свяжите с ним созданный объектA.
Это происходит в больших масштабах с большим количеством моделей, связанных с моделью A. Но я хочу, чтобы все отношения были видны в классе A, чтобы, когда я хочу создать объект A, я сначала создавал все связанные объекты после проверки их независимо от отношений, затем создавал новый объект A и связывал все эти связанные объекты с ним. Итак, я сделал так:
class A(Model):
b = OneToOneField('B', on_delete=CASCADE)
c = ManyToManyField('C') # as there is no OneToManyField
class B(Model):
# some fields
class C(Model):
# some fields
Но это решение кажется не очень хорошим, поскольку C должен иметь только один A объект.
Допустимо ли так поступать или есть другой подход, основанный на передовой практике?
OneToMany равен конструктору ForeignKey.
class A(Model):
b = OneToOneField('B', on_delete=CASCADE)
c = Foreignkey('C', on_delete=CASCADE)
class B(Model):
# some fields
class C(Model):
# some fields
По-моему, совершенно нормальный подход.