Что бы я сделал:
Поскольку вы имеете дело с моделями, ModelForm будет проще всего, поскольку он автоматически проверяет аргументы, предоставленные в ваших моделях, например max_length
,и т.д.
И так как у вас так много ForeignKeys, и потому что я не знаю, сколько полей у каждой модели (хотя, похоже, у вас много) ... Для упрощениякод, если бы я был тобой, я бы сделал вид, что создается только Заказчик.Зачем?Потому что это ваша родительская модель, а другая не может существовать без нее.
После этого я бы сделал отдельное представление, чтобы позволить этому новому Заказчику добавлять новое Местоположение по одному и устанавливать правильноеСвязаться и AccountManager вместе с ним, потому что, как вы сказали, они могут добавить любое их количество.Если вы сделали все это сразу, то отображение X числа дополнительных форм на той же странице, чтобы они могли заполнить больше форм Location, Contact и AccountManager, с большей вероятностью будет содержать больше ошибок от пользователя.Хранение вещей может помочь уменьшить это.Поскольку вы не показали никакого кода, я не могу сказать намного больше, чем это, потому что я не знаю, какие из этих других полей модели являются обязательными или нет, или даже сколько у вас есть, но это звучит как многополя.
Дополнительные комментарии:
Недостаток двух отдельных представлений, одного для родителя и другого для детей, заключается в том, что у вас больше запросов, что занимает больше времени.найти каждый объект, хотя и незначительный, но важно спроектировать так, чтобы оптимизировать до как можно меньшего количества запросов.
Достоинством является ясность для пользователя, поэтому они знают, что нужно сделать что-то одно за один раз, ивам также легче написать код, потому что вам не нужно брать число Х других потенциальных моделей.Допустим, у вас был клиент с 10 другими моделями, и вы хотели, чтобы все было собрано в одном представлении ... Написание функции для этого было бы намного сложнее.
Было бы полезноесли вы поместите здесь свой собственный код, , потому что для меня это звучит так, будто вы хотите сделать квитанцию с их адресом, телефоном и местонахождением, и если я прав, вы могли бы легко добавитьполя из Контакта и Местоположения внутри модели Customer.Или, может быть, даже установить некоторые из этих полей в модели Customer как поля местоположения и контакта по умолчанию, а затем, если пользователь хочет больше, дать им представление, позволяющее им создавать дополнительные Location, Contact и AccountManager.