#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'),
]