Обновление поля внешнего ключа экземпляра модели при создании экземпляра другой модели
У меня есть две модели, Profile и BusinessProfile. К одному бизнес-профилю могут иметь доступ несколько пользователей (через модель профилей, которая связана с моделью пользователей). Я пытаюсь построить модель так, чтобы вошедший в систему пользователь мог создать бизнес-профиль, что я и сделал. Однако у меня возникают проблемы с тем, как обновить поле ForeignKey "Business" в модели профиля с полем BusinessProfile id в качестве значения при создании экземпляра модели BusinessProfile этим пользователем. Кто-нибудь знает, как мне это сделать?
Мой models.py выглядит следующим образом:
class BusinessProfile(models.Model):
business_name = models.CharField(verbose_name='Business Name', max_length=255)
business_description = models.TextField(verbose_name='Business Description', max_length=500)
business_contact_number = models.CharField(verbose_name='Business Contact Number', max_length=32)
business_email = models.EmailField(verbose_name='Business Email')
address = AddressField(verbose_name='Business Address')
creation_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.business_name)
class Profile(models.Model):
MALE = 'M'
FEMALE = 'F'
OTHER = 'O'
UNSPECIFIED = "U"
GENDER_CHOICES = [
(MALE, 'Male'),
(FEMALE, 'Female'),
(OTHER, 'Other'),
(UNSPECIFIED, 'Prefer not to say'),
]
user = models.OneToOneField(User, on_delete=models.CASCADE)
phone_number = models.CharField(verbose_name='Mobile Phone Number', max_length=20)
bio = models.TextField(verbose_name='Bio', max_length=500, blank=True, null=True)
date_of_birth = models.DateField(verbose_name='Date of Birth', blank=True, null=True)
first_name = models.CharField(verbose_name='First Name', max_length=255, blank=True, null=True)
surname = models.CharField(verbose_name='Surname', max_length=255, blank=True, null=True)
gender = models.CharField(verbose_name='Gender', max_length=255, choices=GENDER_CHOICES, blank=True, null=True)
emergency_contact_name = models.CharField(verbose_name='Emergency Contact Name', max_length=255, blank=True, null=True)
emergency_contact_number = models.CharField(verbose_name='Emergency Contact Number', max_length=20, blank=True, null=True)
business = models.ForeignKey(BusinessProfile, null=True, blank=True, on_delete=models.SET_NULL) # Upon creation of business profile this should update to the BusinessProfile id just created.
creation_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.user)
Мое представление для создания BusinessProfile:
class CreateBusinessProfileView(CreateView, NextUrlMixin):
model = BusinessProfile
form_class = BusinessProfileForm
template_name = 'profiles/createbusinessprofile.html'
default_next = '/'
def form_valid(self, form):
form.instance.user = self.request.user
form.save()
next_path = self.get_next_url()
return redirect(next_path)