Показывать отборные данные select в textarea

Я новый в программировании в Джанго, пожалуйста, если кто-то может помогать мне, я ему благодарен за это.

У меня есть один select где выборы - объекты, хранившиеся в базе данных так называемой модели Tema, то, что я хочу сделать, состоит в том, чтобы показывать признаки модели, выбранной под select в одном textarea.

Это код вида:

from django.shortcuts import render
from django.contrib import messages
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse, reverse_lazy
from django.http.response import HttpResponseRedirect
from django.views.generic.detail import DetailView
from django.views.generic.edit import UpdateView, DeleteView, CreateView
from django.views.generic.list import ListView
from forms import CreateRemedial, UpdateRemedial
from remedial.models import Remedial

class CreateRemedial(CreateView):

    model = Remedial
    form_class = CreateRemedial
    template_name = 'remedial/list-rem/create_r.html'

    def form_valid(self, form):
        new_rem = form.save()
        messages.success(self.request, 'Remedial creado satisfactoriamente', extra_tags='msg')
        url = reverse('update_remedial', kwargs=dict(pk=new_rem.pk))
        return HttpResponseRedirect(url)

    def form_invalid(self, form):
        print self.request.POST
        messages.error(self.request, 'Verifique los datos marcados en rojo', extra_tags='msg')
        return super(CreateRemedial, self).form_invalid(form)

Код модели:

from django.db import models
from tema.models import Tema

class Remedial(models.Model):
    description=models.CharField(max_length=300)
    tema=models.ForeignKey(Tema)

    def __unicode__(self):
        return self.description

Код шаблона:

{% extends 'base.html' %}
{% block menu %}
    <li><a href="{% url 'index' %}"><i class="fa fa-home"></i> Inicio</a></li>
    <li><i class="fa fa-plus-circle"></i> Insertar remedial</li>
{% endblock %}
{% block title %}Insertar Remedial{% endblock %}
{% block new_r %}active{% endblock %}
{% block content %}
    <div class="col-lg-10">
        <div class="box box-primary flat">
            <div class="box-header">
                <h3 class="box-title"><i class="fa fa-plus-circle"></i> DATOS <span
                        class="small">del nuevo remedial</span></h3>
            </div>
            <div class="box-body">
                <dl class="margin">
                    <form role="form" action="{% url 'create_remedial' %}" method="POST" autocomplete="off">
                        {% csrf_token %}
                        <div class="col-lg-12" style="margin: -15px 0 0 0; padding-bottom:10px; ">
                           <label for="descrip">{{ form.description.label|escape }} <sup><sup><i
                                   class="fa fa-asterisk"></i></sup></sup></label>

                            <div class="form-group {% if form.description.errors %}has-error{% endif %}">
                                {{ form.description }}
                                <small class="help-block">
                                    {% if form.description.errors %}{% for error in form.description.errors %}
                                        {{ error|escape }}
                                    {% endfor %}{% else %}{{ form.description.help_text|escape }}{% endif %}</small>
                            </div>
                             <div class="form-group {% if form.tema.errors %}has-error{% endif %}">
                                {{ form.tema }}
                                <small class="help-block">
                                    {% if form.tema.errors %}{% for error in form.tema.errors %}
                                        {{ error|escape }}
                                    {% endfor %}{% else %}{{ form.tema.help_text|escape }}{% endif %}</small>
                            </div>

                            <button type="submit" class="btn btn-success btn-flat" name="only_save"><i
                                    class="fa fa-check"></i> Insertar
                            </button>
                            <a href="{% url 'list_remedial' %}" class="btn btn-danger btn-flat pull-right"><i
                                    class="fa fa-arrow-circle-left"></i> Cancelar</a>
                        </div>
                    </form>
                </dl>
            </div>
        </div>
    </div>
{% endblock %}

И код формуляра:

class CreateRemedial(forms.ModelForm):

    class Meta:

        model= Remedial

    description=forms.CharField(

        max_length=300,

        label='Descripción',

        help_text='Escriba los ejercicios que conforman el remedial',

        widget=forms.Textarea(attrs={'id': 'descrip',
                                      'class': 'form-control',
                                      'name': 'descrip1',
                                      'placeholder': 'Ejemplo: Ejercicio 3 del LT'
        })
    )
    tema=forms.ModelChoiceField(queryset=Tema.objects.all(),empty_label='Seleccione un tema',help_text='Seleccione el tema al cual está vinculado el remedial')

Главным образом то, что я хочу, состоит в том, чтобы помещать внутри формуляра, что у меня есть один textarea таким образом что, когда он это развернет и выберет тему ему меня показало описание того же самого в textarea.

5
задан 30.03.2016, 15:14
1 ответ

Ты должен создавать AJAX, который называл бы php, где ты искал признаки Model. Я оставляю тебе код, как он был бы AJAX.

$('#idSelect').change( function() {
var selectVal = $('#idSelect').val();
 $.ajax({
        type: 'POST',
        data: "select=" + selectVal,
        dataType: "json",
        url: "/url_donde_tendras_el_php_que_consiga_los_datos_del_model",
        success: function (response) {
            for(var i=0;i<response.length;i++){
                $('#idTextArea').append(response[i]);
            }
        },

});

Замечание В php ты получаешь стоимость select из-за postpor то, что ты сделал бы

$selectVal = $_POST['select'];
2
ответ дан 24.11.2019, 14:40

Теги

Похожие вопросы