установите его в def
а самом деле это может быть простой случай, но мне сложно разобраться.
У меня есть две воронки регистрации пользователей (корпоративная и все остальные). Когда корпоративный пользователь создает экземпляр User через мою регистрационную форму, я также хотел бы, чтобы он вводил дополнительные формы, которые создают связанные экземпляры (на основе моделей Website и Organization_Contact).
Я знаю, как решить эту проблему, выполняя дополнительные синхронные или асинхронные запросы, но я бы хотел, чтобы пользователь заполнил три формы и отправил их одним щелчком мыши.
Моя проблема здесь заключается в том, что две другие формы полагаются на внешний ключ пользователя в качестве поля. Я сделал это поле "null = True, blank = True", чтобы я мог проверять и сохранять формы без внешнего ключа, но в конечном итоге я хочу добавить этот ключ в оба экземпляра модели.
Я думал, что смогу проверить три формы, сохранить пользовательскую форму, а затем использовать набор запросов модели для возврата нового User.id (все в одном представлении). Затем я бы добавил это значение user_id в два других словаря форм (WebsiteForm и Organization_ContactForm).
Это будет работать так:
def register_company(request):
if request.method=='POST'
uform=UserCreationForm(request.POST, prefix='user')
sform=SiteForm(request.POST, prefix='site')
oform=OrgForm(request.POST, prefix='site')
if uform.is_valid() and sform.is_valid() and oform.is_valid():
uform.save()
user=User.objects.get(email__iexact=uform.cleaned_data['email'])
uid=unicode(user.id)
#now I'd add uid back into the SiteForm and Orgform dictionaries and then save both instances
Проблемы: 1) Не уверен, смогу ли я сохранить форму модели и затем вернуть этот экземпляр модели в виде набора запросов в одном представлении
2) Я говорю, что я не уверен, потому что я не смог решить проблему с попыткой передать переменную в набор запросов.
Кажется, что метод get manager не принимает переменную там. Я предполагаю, что столько, сколько я передал эквивалентную жестко закодированную строку, и это сработало.
Итак, я подумал о создании нового метода менеджера (электронная почта), который принял бы переменный аргумент (очищенное поле электронной почты), а затем повторил процесс сохранения одной формы модели, получения данных идентификатора модели и сохранения других форм модели.
Я также подумал, что смогу справиться с этой проблемой с помощью сигнала после сохранения.
Просто общее направление здесь было бы очень полезно. Мне нужна отправная точка.