Dear group,

I am Django learner.

I have two models.

1. ModelRegister 
2. ModelGSP

ModelRegister returns model_name.
ModelGSP has a foreignkey to ModelRegister.

When we select a particular model from a ModelGSP model,i want to fill a 
field in ModelGSP with the data for a selected model when ajax request is 
made.

Input data and expected result shown in screen shot below.

*currently when i select any model from RegisteredModel, none of the data 
is populated in get_model_nos_for_modelname field.*

*Please correct me if i am doing any mistake and how to proceed further.*

[image: query.png]
Below is my code snippet :

Enter code here...

Models.py:
=======
class ModelRegister(models.Model):
    """
        This class is used to register the model.
    """
    FLOAT_CHOICES = [[float(x), float(x)] for x in range(1, 21)]

    model_name = models.CharField(max_length=128, verbose_name="ModelName")
    model_no = models.CharField(max_length=128, verbose_name="ModelNo")
    os_name = models.ForeignKey(OSName, on_delete=models.CASCADE, 
verbose_name="OSName",default=" ")
    chipset_type = models.ForeignKey(ChipsetType,on_delete=models.CASCADE, 
verbose_name="chipsetType")

    class Meta:
        verbose_name_plural = "ModelRegisteredList"

    def __str__(self):
        return self.model_name


class ModelGSP(models.Model):
    """
        This class is used to raise Model GSP request.
    """

    registered_model = 
models.ForeignKey(ModelRegister,on_delete=models.CASCADE, 
verbose_name="ModelName")
    model_nos_for_reg_model = models.ManyToManyField(ModelNumber)
    model_gsp_requester = models.CharField("Model GSP Requester", 
max_length=128,default=" ")
    integrator = models.CharField("Integrator", max_length=100,default=" ")

    class Meta:
     verbose_name_plural = "ModelGSPRequests"

    def __str__(self):
     return self.model_gsp_requester + self.integrator + str(self.pk)

class ModelRegisterForm(ModelForm):
    """
        This class is used to register the model information.
    """

    class Meta:
        model = ModelRegister
        exclude = ['model_leader']
        #fields = '__all__'


    @property
    def helper(self):
        helper = FormHelper()
        helper.form_tag = 'model_register_form'
        helper.layout = Layout(
            Fieldset(
               'Registered Model Details',
                #Row('model_leader' ),
                Row('model_name','model_no'),
                Row('os_name', 'os_version'),
                Row('chipset_type','chipset_name')
            )
        )

        return helper

class ModelGSPRequestForm(ModelForm):
    """
        This class is used to define the form fields to raise the model GSP 
request.
    """
    registered_model = forms.ChoiceField(required=False,choices=unique_values)
    #model_nos_for_reg_model = 
forms.ModelMultipleChoiceField(required=False,queryset=)

    class Meta:
        model = ModelGSPRequest
        exclude = ['model_gsp_requester']

    #choices=[]
    def __init__(self, *args, **kwargs):
        super(ModelGSPRequestForm, self).__init__(*args, **kwargs)
        #self.form_tag = False
        self.helper = FormHelper()
        self.helper.layout = Layout(
                                    Fieldset("Add Model GSP Request",
                                              
Row('registered_model','model_nos_for_reg_model')
                                            )
                                   )
        self.fields['model_nos_for_reg_model'].queryset = 
ModelNumber.objects.none()

ajax.py:
========

def load_model_details(request):
    print("load model details")
    print("request method",request.method)

    model_name_id = request.GET.get("model_name")
    model_registered_instances = 
ModelRegister.objects.filter(model_name_id=model_name_id)

    model_number = []

    for model in model_registered_instances:
        model_number = model_number.append(model.model_no)
        print("Model Number:", model_number)


    return render(request, 'model_info_options.html', 
{'model_registered_instances':model_registered_instances})

model_info_options.html:
========================

<!DOCTYPE html>
<html lang="en">
<option value="">---------</option>
    {% for model in model_registered_instances %}
<option value="{{ model.pk }}">{{ model.model_no }}</option>
    {% endfor %}
</html>

ModelGSP.html:
=============

<!DOCTYPE html>
{% extends 'base.html' %}
{% load crispy_forms_tags %}

{% block static %}
{% endblock static %}

{% block content %}
<form class="form" form='model_gsp_form' id="gspmodelinfoForm" method="post" 
model-details-url="{ %url 'ajax_load_model_details' %}" role="form">
   {% csrf_token %}
   <div class="container">
       {% crispy form %}
      <br>
      <br>
           <button type="submit" class="btn btn-primary">
            {% if action == "add" %}
                <span class="fas fa-plus"></span>Add
            {% else %}
                <span class="fas fa-edit"></span>Update
            {% endif %}
           </button>
           <button type="reset" class="btn btn-primary" aria-label="Close" 
data-dismiss="modal">
              <span aria-hidden="true">&times;</span>Cancel
           </button>
    </div>
</form>
{% endblock content %}

{% block scripts %}
<script type="text/javascript">
    $(document).ready(function(){
        $("#id_registered_model").change(function () {

            var url = $("#gspmodelinfoForm").attr("model-details-url");  # Get 
the url of the 'gspmodelinfoForm' view

            var model_name_id = $(this).val(); //get the selected model name id 
from the HTML input

            $.ajax({                        //Initialize an ajax request
                       url: url,           //Set the URL of the request

                       data: {
                                 'model_name' : model_name_id     // add the 
model name to the GET parameters
                       },

                       success: function(data) {    // 'data' is return of 
'load_model_details' view function
                           $(#"id_registered_model_no").html(data)       // 
place the contents of the model no with the data came from server
                       }
            });
        });
    });
</script>
{% endblock scripts %}

def create_model_gsp_request_form(request,id=None):
    print("create_model_gsp_request_form:", id)

    if id:
        action = 'edit'
        model = get_object_or_404(ModelGSPRequest, pk=id)
    else:
        action = 'submit'
        model = ModelGSPRequest()

    message = ""

    if request.method == 'POST':
        print("when the request is POST ,In ModelGSPRequestForm")
        form = ModelGSPRequestForm(request.POST, instance=model)

        if form.is_valid():
            new_model_gsp_request = form.save(commit=False)
            new_model_gsp_request.model_gsp_requester = request.user.username
            new_model_gsp_request.save()
            form.save_m2m()
            return HttpResponseRedirect('/gspapp/ModelGSPRequestList')

    else:
        print("when the request is GET ,In ModelGSPRequestForm")
        form = ModelGSPRequestForm(instance=model)
        # apply_gsp_model_data = 
serializerModelGSPRequestLists.serialize("json", ApplyGSP.objects.all())
        # print("apply_gsp_model_Data:",apply_gsp_model_data)

        context = {'form': form, 'Message': message, 'action': action}

    context = {'form': form, 'Message': message, 'action': action}
    return render(request, 'ModelGSP.html', context)

urls.py:
-------

urlpatterns = [

path('ModelGSPRequestList/', 
login_required(views.ModelGSPRequestList.as_view(), 
login_url='/gspapp/login/'), name='ModelGSPRequestList'),
path('ModelGSPRequestList/requestForm/', views.create_model_gsp_request_form, 
name='ModelGSPRequestForm'),
re_path(r'^editModelGSPRequest/(?P<id>\d+)/$', 
views.create_model_gsp_request_form, name='editModelGSPRequest'),
#path('',include(router.urls)),
path('ajax/load_model_details/', 
ajax.load_model_details,name='ajax_load_model_details')]

Regards,
N.Dilip kumar.




-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/40fadea3-1530-4134-8b2b-4c4ea0e9a826%40googlegroups.com.

Reply via email to