Django - tabularinline в форме в шаблоне
У меня есть приложение для голосования (вопрос и выбор). В админке я могу использовать TabularInline, чтобы видеть для каждого вопроса выбор фидлов (по умолчанию 3 поля) и в админке я могу установить название вопроса, постер и выбор для этого вопроса и я могу создать вопрос с выбором и из шаблона я могу голосовать и т.д. Но я не знаю как сделать форму с точным механизмом для использования в шаблоне, где можно задать название, постер и самое главное выбор для этого вопроса с механизмом добавления другого выбора как в админке .
В форме я пытаюсь сделать следующее
class ChoiceInline(admin.TabularInline):
model = Choice
extra = 3
class creareSondajForm(ModelForm):
class Meta:
model = Question
fields = [ 'question_text', 'poster' ]
inlines = [ChoiceInline]
но в шаблоне он показывает только вход для названия вопроса и плакат, а не вход, где нужно установить выбор. Пожалуйста, помогите мне. Спасибо!
Ниже мои настройки.
models.py
class Question(models.Model):
question_text = models.CharField(max_length=200, verbose_name='Intrebare')
poster = models.ImageField ( upload_to ='sondaj/', default='sondaj/poster_sondaj_pl.jpg', verbose_name='Poster (120px * 96px)')
pub_date = models.DateTimeField('publicat la:')
def __str__(self):
return self.question_text
#pentru a redimensiona rezolutia posterului incarcat
def save(self, *args, **kawrgs):
super().save(*args, **kawrgs)
img = Image.open(self.poster.path)
if img.height > 96 or img.width > 120:
output_size = (96, 120)
img.thumbnail(output_size)
img.save(self.poster.path)
class Meta:
verbose_name = 'Intrebari sondaj'
verbose_name_plural = 'Intrebari sondaj'
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200, verbose_name='')
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
class Meta:
verbose_name = 'Variante raspuns'
verbose_name_plural = 'Variante raspuns'
admin.py
class ChoiceInline(admin.TabularInline):
model = Choice
extra = 3
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [(None, {'fields' : ['question_text', 'poster']}),
('Data publicarii', {'fields' : ['pub_date'], 'classes': ['collapse']}),]
inlines = [ChoiceInline]
admin.site.register(Question, QuestionAdmin)
views.py
def creareSondaj(request):
form = creareSondajForm()
if request.method == 'POST':
form = creareSondajForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, "Sondaj creat cu succes")
return redirect('utilizatori:cont-trainer')
else:
messages.error(request, 'Eroare creare sondaj ')
return redirect('utilizatori:cont-trainer')
context = { 'form' : form}
return render(request, 'sondaj/creare_sondaj.html', context)
form.py (но не работает, не показывает варианты выбора)
class ChoiceInline(admin.TabularInline):
model = Choice
extra = 3
class creareSondajForm(ModelForm):
class Meta:
model = Question
fields = [ 'question_text', 'poster' ]
inlines = [ChoiceInline]