как получить параметр URL в модели формы - PullRequest
0 голосов
/ 12 января 2020

У меня есть одно название модели - cityform

Я хочу получить URL-адрес в этом CityFrom Как я могу это сделать?

вот мой URL

path('state/city/<int:id>/', City.as_view(), name="city")

http://localhost: 8000 / страна / штат / город / 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})

Ответы [ 2 ]

1 голос
/ 12 января 2020

Передайте параметр url в качестве аргумента ключевого слова из views.py следующим образом.

form = CityFrom(id=kwargs.get("id"))

Чтобы получить идентификатор в файле forms.py, используйте следующий код в методе __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')

* Позвоните в super после получения идентификатора в вашей форме, как указано выше. Здесь важен порядок вызова супер.

0 голосов
/ 12 января 2020

Попробуйте

CityFrom(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        self.id = kwargs.pop('id')
        super(CityFrom,self).__init__(*args, **kwargs)
...