我的网址格式为:
path('makeoffer/<listing_id>', OfferCreateView.as_view(), name="CreateOfferview"),
此视图是带有两个参数的表单。 Listing_id需要保存为Offer对象的一部分,并且不能由用户编辑。我本质上是想这样做:
def form_valid(self, form):
form.instance.user = self.request.user
form.instance.datetime = dt.now()
form.instance.listing_id = listing_id #(from the url)
如何从form_valid函数内部访问参数?我已经尝试过get_context_data,但是我唯一能看到的方法是将get_context_data传递给视图,然后再将视图传递回表单,这似乎有些怪诞。
答案 0 :(得分:0)
将表单类的 __init__()
方法覆盖为
class SampleForm(forms.Form):
def __init__(self, *args, **kwargs):
self.listing_id = kwargs.pop('listing_id', None)
super().__init__(*args, **kwargs)
def form_valid(self, form):
# you could access the variable by "self.listing_id"
.....
my_list_id = self.listing_id
# your code ....
在您看来
def myview(request,listing_id):
form = SampleForm(listing_id=listing_id)
....