У меня есть CreateView, где я хочу создать новую цену для продукта. На странице сведений о продукте есть кнопка для изменения цены, которая ведет к новой странице, например ...\partprice\X
, где X - идентификатор продукта. У продукта может быть несколько цен, поэтому я использую CreateView
. Это единственный способ получить part_id
из URL-адреса (например, здесь )?
В forms.py:
class PPriceFormset(ModelForm):
required_css_class = "required"
class Meta:
model = PPrice
fields = ("price", "customer", "date", "part")
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_method = 'POST'
self.helper.layout = Layout(Row(Column('price'),
Column('customer')),
Submit('submit', 'Save price', css_class='btn-primary'),
Field("date", type="hidden"),
Field("part", type="hidden"))
Я хочу добавить X
сверху в скрытое поле «часть». В просмотре уже есть:
class PPrice(CreateView):
model = PPrice
template_name ="gap/pprice_update.html"
form_class = PPriceFormset
success_url = reverse_lazy('part-list')
def get_form_kwargs(self, *args, **kwargs):
kwargs = super(PPriceCreateView, self).get_form_kwargs(*args, **kwargs)
kwargs['part_id'] = self.kwargs.get("part_pk")
return kwargs