Django вставляет идентификатор пользователя (внешний ключ) при отправке формы

#django #django-models #django-forms

Вопрос:

Я изо всех сил пытаюсь понять, как я могу обновить модель, у которой есть внешний ключ. У меня есть модель пользователя под названием Компании и модель CompaniesProfile, в которой поле пользователя задано в качестве внешнего ключа модели компаний:

 class Companies(User, PermissionsMixin):

    company = models.TextField(max_length=100, unique=True)
    tel = models.TextField(max_length=20)
    reg_nr = models.TextField(max_length=50, unique=True)
    vat = models.TextField(max_length=50)


class CompanyProfile(models.Model):
    user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
    logo = models.ImageField(blank=True)
    street = models.TextField(max_length=256)
    city = models.TextField(max_length=36)
    postal_code = models.TextField(max_length=16)
    country = models.TextField(max_length=36)
 

Когда Компания регистрируется, она может создать профиль CompanyProfile . У меня есть форма для этого:

 class CompaniesProfileForm(forms.ModelForm):

    class Meta:
        model = CompanyProfile
        fields = ('street', 'city', 'postal_code', 'country', 'logo')
 

и вид:

 class CreateProfile(CreateView, LoginRequiredMixin):
    template_name = 'companies/profile.html'
    form_class = CompaniesProfileForm
    success_url = reverse_lazy('home')
 

Всякий раз, когда форма в представлении отправляется, я получаю ошибку «Ошибка целостности в /компаниях/профиле/
НЕ удалось выполнить ограничение NOT NULL: companies_companyprofile.user_id»

Наверное, это потому user , что поле пустое. Мой вопрос заключается в том, как заполнить user автоматически, исходя из того, какой пользователь в данный момент вошел в систему.

urls.py

 urlpatterns = [
    path('register/', views.Register.as_view(), name='register'),
    path('login/', auth_views.LoginView.as_view(template_name='companies/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
    path('create/', views.CreateAds.as_view(), name='ads_create'),
    path('profile/', views.CreateProfile.as_view(), name='profile_create'),
]