#django
#django
Вопрос:
Я новичок в Django, и я создаю очень простую форму, вот она
Я хотел бы иметь флажок выбора радио (вместо списка выбора, как у меня сейчас), что-то вроде этого
Позже у меня будет больше вопросов в моей форме, и я думаю, что пользователю будет проще выбрать «радио»
Я пытался добавить некоторые widget=forms.RadioSelect
в свою модель, но, похоже, мы не можем этого сделать здесь Вы знаете, как я мог бы это сделать?
Вот мой код :
models.py
from django.db import models
from django import forms
class Post(models.Model):
SAMPLE_CHOICES =(
(0, "Very satisfied"),
(1, "satisfied"),
(2, "neutral"),
(3, "not very satisfied"),
(4, "not satisfied at all"),
)
q1 = models.IntegerField(choices = SAMPLE_CHOICES, verbose_name=u"cleanliness of the premises")
q2 = models.IntegerField(choices = SAMPLE_CHOICES, verbose_name=u"quality of services")
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('post/new/', views.post_new, name='post_new'),
]
views.py
from .forms import PostForm
from.models import Post
from django.shortcuts import render
def post_new(request):
form = PostForm()
if request.method == 'POST':
form = PostForm(request.POST)
print(form.is_valid()) # some debug
print(form)
if form.is_valid():
form.save()
print(Post.objects.all()[-1].q1) # I print the form i just saved for debug purpuse
return render(request, 'blog/post_edit.html', {'form': form})
forms.py
from django import forms
from .models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ('q1', 'q2')
base.html
{% load static %}
<html>
<head>
<title>Satisfaction form</title>
</head>
<body>
<div class="page-header">
<h1>Satisfaction form</h1>
</div>
<div class="content container">
{% block content %}
{% endblock %}
</div>
</body>
</html>
Ответ №1:
если вы хотите изменить виджет для своего поля, ModelForm
вы можете сделать это в class Meta:
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ('q1', 'q2')
widgets = {
'q1': forms.RadioSelect(),
}