Как передать id foreign key в CreateView в Django
Есть два класса:
class SupplierDetailView(UpdateView):
model = Supplier
form_class = SupplierForm
success_url = '/prices'
template_name = 'prices/suppliers_prices_detail.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['suppliers_emails'] = SupplierPricesEmails.objects.filter(supplier=self.object)
context['supplier_id'] = self.object.id
return context
class SupplierPricesEmailsCreateView(CreateView):
model = SupplierPricesEmails
form_class = SupplierPriceEmailsForm
success_url = '/prices'
template_name = 'prices/suppliers_prices_emails_update.html'
def form_valid(self, form):
form.instance.supplier_id = 2
return super().form_valid(form)
Класс SupplierPricesEmailsCreateView должен выводить форму для заполнения и сохранения данных для выбранного поставщика.
Класс для списков email поставщика
class SupplierPricesEmails(models.Model):
supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE, related_name='supplier_emails_owner')
site_id = models.CharField(max_length=20, unique=True, verbose_name='Ид ABCP (Дочерний)', blank=True, null=True)
email = models.EmailField()
direction = models.CharField(max_length=50, verbose_name='Направление')
email_theme = models.CharField(max_length=50, verbose_name='Тема письма')
send_abcp = models.BooleanField(default=False, verbose_name='Выкладывать на ABCP')
delivery = models.IntegerField(default=1, verbose_name='Срок доставки')
added_by = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='supplier_prices_emails_added_by', on_delete=models.SET_DEFAULT, default=1, verbose_name='Добавил')
class Meta:
verbose_name = 'Настройка для почты'
verbose_name_plural = 'Настройки для почты'
def __str__(self):
return f'{self.supplier} {self.direction} {self.delivery}'
def get_absolute_url(self):
return reverse('suppliers_prices:prices_emails_update', kwargs={'pk': self.pk})
Не могу понять как передать в "form.instance.supplier_id = 2" supplier_id из первого. На форму его могу вывести, а как обратиться в createview - не могу понять.