我的一个模特名字是cityform
我想从这个城市获取URL参数我可以这样做吗?
这是我的网址
path('state/city/<int:id>/', City.as_view(), name="city")
http://localhost:8000/country/state/city/3/
这是我的表格
课程
CityFrom(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CityFrom,self).__init__(*args, **kwargs)
print(args)
print(kwargs)
self.fields['state'] = forms.ModelChoiceField(
empty_label = 'Select',
queryset = State.objects.all()
)
class Meta:
model = City
fields = ('state', 'name')
以这种形式我要访问id = 3
这是我的观点
from django.views import View
class City(View):
def get(self, request, *args, **kwargs):
Forms = CityFrom()
return render(request, 'albums/add.html', {'Forms': Forms})
答案 0 :(得分:1)
按照以下方式从views.py中传递url参数作为关键字参数。
form = CityFrom(id=kwargs.get("id"))
要在您的forms.py中获取ID,请在表单的__init__
方法中使用以下代码。
self.id = kwargs.get('id')
您的表单应如下所示。
CityFrom(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.id = kwargs.get('id')
super(CityFrom,self).__init__(*args, **kwargs)
self.fields['state'] = forms.ModelChoiceField(
empty_label = 'Select',
queryset = State.objects.all()
)
class Meta:
model = City
fields = ('state', 'name')
*如上获得表格中的ID后,请致电super。在这里,调用super的顺序很重要。
答案 1 :(得分:0)
尝试
CityFrom(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.id = kwargs.pop('id')
super(CityFrom,self).__init__(*args, **kwargs)