我想检查URL路径,以便可以基于它创建表单。在视图中,我们可以使用request参数来获取URL路径,是否有类似的方法可以在Forms.py中获取当前URL?
module 'self' has no attribute 'read_file'
答案 0 :(得分:1)
您不能这样做。首次导入模块时,会在模块级别或类级别定义任何内容,因此不能依赖于URL。您唯一可以做的就是在实例化表单时传递一个参数,然后根据该参数更改选择。您可以使用字典来保存选择,以便表单可以从参数中选择相关的选择:
CHOICE_DICT = {
'phone': (
('Samsung', 'Samsung'),
('iPhone', 'iPhone'),
)
'car': (
('Honda', 'Honda'),
('Toyota', 'Toyota'),
)
}
class Productform(forms.ModelForm):
brand=forms.ChoiceField(choices=brand_choises,widget=forms.Select(attrs={'class':'products'}))
class Meta:
model = Product
def __init__(self, *args, **kwargs):
form_type = kwargs.pop('form_type', None)
super(ProductForm, self).__init__(*args, **kwargs)
self.fields['brand'].choices = CHOICE_DICT[form_type]
,然后以您的形式执行form = Productform(form_type='car')
或其他任何操作。不要忘记在POST和GET上都通过它。