Задать вопрос
Serj-B
@Serj-B
i am lamer0k =/

Как в Django сохранить объектыв в связанные модели?

Мне нужно зарегестрировать пользователя, но при его регистрации, вначале должна создаваться запись в другой модели (Project) и пользователь должен привязываться (ForeignKey) к этой записи. Я решил, что в методе form_valid выберу максимальное значение id из Project, прибавлю к нему единицу и потом создам нужную мне запись в Project + Свяжу User по project_id + 1
class Registration(FormView):

    template_name = 'profile/registration.html'
    form_class = RegistrationForm

    success_url = 'cabinet:main'

    def form_valid(self, form):
        self.object = form.save(commit=False)
        qs = models.Project.objects.all().aggregate(Max('id'))
        project_id = (qs['id__max']) + 1
        project = models.Project(
            id=project_id,
            project_name='Новый проект',
        )
        project.save()
        self.object.project = project_id #PrimaryKey
        self.object = form.save()

        messages.success(self.request, 'Вы успешно зарегестрированы')
        return super().form_valid(form)

В результате мне выдает ошибку:
Cannot assign "9": "Profile.project" must be a "Project" instance.
при этом запись в model.Project создается, но функция ее не видит.

Кам можно решить эту проблемку?
  • Вопрос задан
  • 252 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
tema_sun
@tema_sun
Нужно передавать не PK, а инстанс объекта.
self.object.project = project
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы