Наиболее практичным способом, я думаю, является использование modelForm и formsets ...
Вы можете использовать форму модели для создания форм из модели. Документы здесь ....
Вы можете использовать встроенный набор форм для простого создания форм и сохранения данных ... Документ здесь ...
Но, конечно, связанные модели должны иметь иностранный ключ для пользователя или профиля. Структура вашей модели может не подходить, потому что, насколько я знаю, встроенная модель должна иметь чужой ключ к другому, поэтому на данный момент ваш внешний ключ к профилю должен быть в модели адреса ... Но, как я сказал, я не уверен. Вы можете попробовать ...
Поскольку у вас есть правильные отношения foreignKey, вы можете использовать встроенные наборы форм с modelform, чтобы создать форму из многих моделей ...
РЕДАКТИРОВАТЬ:
Насколько я понимаю, вы можете использовать модельные формы (без наборов форм) и легко добавить свою форму в шаблон. Но в функции просмотра, которая будет обрабатывать публикуемые данные, вы должны вручную устанавливать внешние соединения «один к одному». Как:
home = Address.objects.create(...)
work = Address.objects.create(...)
Profile.objects.create(home_address=home, work_address=work,...)
Или вы можете изменить свои модели:
class Profile(models.Model): # returned by Django's User.get_profile()
user = models.OneToOneField(User)
language = models.CharField(max_length=20)
class Address(models.Model):
profile = models.ForeignKey(Profile)
street = models.CharField(max_length=100)
city = models.CharField(max_length=100)