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

По-моему, совершенно нормальный подход.

Вернуться на верх