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
По-моему, совершенно нормальный подход.