Python django. Как я могу ввести выбранный пользователем текст с выпадающим элементом в поле name_znat - PullRequest
1 голос
/ 01 апреля 2020

Существует форма html с выпадающими элементами:

<form method = "POST" action = "{% url 'create_group_handler'%}">
<select name = "select"> <! - Add an identifier here instead of using 'name' ->
<option value = "value1"> Value 1 </ option>
<option value = "value2" selected> Value 2 </ option>
<option value = "value3"> Value 3 </ option>
</ select>
</ form>

И есть модель Python django:

Znat Class (models.Model):
 name_znat = models.CharField ('Name znat', max_length = 200)

Предположим, что пользователь выбирает выпадающий элемент с текстом «Значение 2». Как я могу ввести выбранный пользователем текст с выпадающим элементом в поле name_znat?

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

Используйте ModelForm, см. https://docs.djangoproject.com/en/3.0/topics/class-based-views/generic-editing/#model -формы . Максимально использует встроенные возможности Django. Удачи!

models.py:

class Znat (models.Model):
    CHOICES = (
        ('value1', 'Value 1'),
        ('value2', 'Value 2'),
        ('value3', 'Value 3'),
    )
    name_znat = models.CharField ('Name znat', max_length = 200, choices=CHOICES)

forms.py:

class CreateZnatForm(ModelForm):
    class Meta:
        model = Znat
        fields = ('name_znat')
        widgets = {
            'name_znat': forms.Select(attrs={'class': 'form-control'}),
        }

views.py:

class ZnatCreate(CreateView):
    model = Znat
    fields = ['name_znat']

urls. py:

urlpatterns = [
    path('znat/', ZnatCreate.as_view(), name='create_group_handler'),
]
1 голос
/ 01 апреля 2020

Вы можете получить значение поля выбора, используя request.POST.get, где все отправленные данные.

views.py

def myview(request):
    if request.method == "POST":
        selected_option = request.POST.get('select')
        Znat.objects.create(name_znat=selected_option)
    return redirect("/")

Также вы должны иметь {% csrf_token %} всякий раз, когда вы ' повторное использование форм. Если ваше мнение не было явно помечено как csrf_exempt. Вы можете прочитать о важности токенов CSRF здесь.

<form method = "POST" action = "{% url 'create_group_handler'%}">
{% csrf_token %}
<select name = "select"> <! - Add an identifier here instead of using 'name' ->
<option value = "value1"> Value 1 </ option>
<option value = "value2" selected> Value 2 </ option>
<option value = "value3"> Value 3 </ option>
</ select>
</ form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...