Hi,

This issue is fixed to me by instantiating the FormHelper() in forms.py.
I referred :
https://django-crispy-forms.readthedocs.io/en/latest/crispy_tag_forms.html



class ApplyGSPForm(ModelForm):
  
*    helper = FormHelper()*
    class Meta:
        model = ApplyGSP

        fields = ['model_name', 'model_no', 'os_ver', 'chipset', 
'patch_level_to_be_applied', 'rel_cycle',
                  'applied_gsp_count', 'from_sas_url', 'to_sas_url', 
'def_src_manifest', 'from_sw_version',
                  'to_sw_version', 'description']
        exclude = ['user', 'requested_time', 'applied_security_patch_level']


Regards,
N.Dilip Kumar.

On Monday, October 7, 2019 at 9:07:38 PM UTC+5:30, Dilipkumar Noone wrote:
>
> Dear Django User Group,
>
> I am django beginner.
>
> Please clarify the below doubt.
>
> *Implement Scenerio:*
> 1.I am developing one django app which needs a form on button click on 
> html page.
> 2.on successful submission should display the object created in the list 
> on the same web page.
>
> Below is the current implementation.
>
> when click on "Apply GSP" button getting below error:
> exc 
>
> VariableDoesNotExist('Failed lookup for key [%s] in %r', ('helper', 
> <ApplyGSPForm bound=False, valid=Unknown, 
> fields=(model_name;model_no;os_ver;chipset;patch_level_to_be_applied;rel_cycle;applied_gsp_count;from_sas_url;to_sas_url;def_src_manifest;from_sw_version;to_sw_version;description)>))
>
> get_response 
>
> <bound method BaseHandler._get_response of 
> <django.core.handlers.wsgi.WSGIHandler object at 0x03FA61F0>>
>
> request 
>
> <WSGIRequest: GET '/gspapp/ApplyGSPList/requestForm/'>
>
>
> *Note:* I am using bootstrap4 model using datatarget attribute to render 
> the crispy form using django templates on button click. 
>
> Please suggest how to resolve this issue.
>
> models.py:
> -----------
>
> class ApplyGSP(models.Model):
>     """
>     This class is used to Apply the GoogleSecurityPatches when the user 
> requested to apply the GSP
>     """
>     user = models.CharField("User", max_length=100, default="")
>     model_name = models.CharField(max_length=100, blank=True)
>     model_no = models.CharField(max_length=100, blank=True)
>     os_ver = models.ForeignKey(OSVersion, on_delete=models.CASCADE, 
> verbose_name="os Version")
>     chipset = models.ManyToManyField(Chipset)
>     patch_level_to_be_applied = models.CharField(max_length=200, blank=True)
>     rel_cycle = models.ForeignKey(ReleaseCycle, on_delete=models.CASCADE, 
> verbose_name="Release Cycle")
>     requested_time = models.DateTimeField(default=timezone.now)
>     applied_gsp_count = models.IntegerField(null=True)
>     applied_security_patch_level = models.TextField(default="")
>     from_sas_url = models.ForeignKey(SourceSASURL, on_delete=models.CASCADE, 
> verbose_name="Source SAS URL")
>     to_sas_url = models.URLField()
>     def_src_manifest = models.ManyToManyField(DefaultSrcManifest)
>     # from_manifest = models.CharField(max_length=200)
>     # to_manifest = models.CharField(max_length=200)
>     from_sw_version = models.IntegerField(null=True)
>     to_sw_version = models.IntegerField(null=True)
>     description = models.CharField(max_length=200)
>
>     class Meta:
>         verbose_name_plural = "ApplyGSPPatches"
>
>     def __str__(self):
>         return self.user + str(self.pk)
>
>
> forms.py:
> ----------
>
> class ApplyGSPForm(ModelForm):
>     """
>         This class is used to define the form input fields to apply the 
> google security patches for each user request
>         from common SAS board:7620
>     """
>
>     class Meta:
>         model = ApplyGSP
>
>         fields = ['model_name', 'model_no', 'os_ver', 'chipset', 
> 'patch_level_to_be_applied', 'rel_cycle',
>                   'applied_gsp_count', 'from_sas_url', 'to_sas_url', 
> 'def_src_manifest', 'from_sw_version',
>                   'to_sw_version', 'description']
>         exclude = ['user', 'requested_time', 'applied_security_patch_level']
>
>
> ApplyGSP.html:
> -------------------
>
> <!DOCTYPE html>
> {% extends 'base.html' %}
> {% load crispy_forms_tags %}
>
> {% block static %}
> {% endblock static %}
>
> {% block content %}
>     <div class="float-md-left">
>         <div class="page-header">
>             <a href="{%url 'gspapp:ApplyGSPRequestForm' %}">
>                 <button type="button" class="btn-primary btn-sm" 
> data-toggle="modal" data-target="#myApplyGSPModal"><span class="fas 
> fa-plus"></span>ApplyGSP</button>
>             </a>
>         </div>
>         <div id="#myApplyGSPModal" class="model fade" role="dialog">
>             <form method="POST" action="">
>                 <!-- The below CSRF Token makes form Secure -->
>                 {% csrf_token %}
>                 <div class="container">
>                    <!-- {% crispy form form.helper 'bootstrap' %} -->
>                     {% crispy form %}
>                         <button type="submit" class="btn btn-primary">
>                             {% if action == "submit" %}
>                                 <span class="fas fa-plus"></span>Submit
>                             {% 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>
>         </div>
>     </div>
> {% endblock content %}
>
> {% block scripts %}
> {% endblock scripts %}
>
>
> Myviews.py:
>
> @login_required(login_url='/gspapp/')
> def apply_gsp_request_form(request, id=None):
>     """
>     :param request: Accept http request
>     :param id: Id of Requested User record
>     :return: http response
>     """
>     print("Inside Apply Google Security Patch Form:", id)
>     print("request:", request.method)
>
>     if id:
>         action = 'edit'
>         model = get_object_or_404(ApplyGSP, pk=id)
>     else:
>         action = 'submit'
>         model = ApplyGSP()
>
>     message = ""
>
>     if request.method == 'POST':
>         form = ApplyGSPForm(request.POST, instance=model)
>
>         if form.is_valid():
>             new_apply_gsp_request = form.save(commit=False)
>             new_apply_gsp_request.user = request.user
>             new_apply_gsp_request.save()
>             return HttpResponseRedirect('/gspapp/ApplyGSPList')
>
>     else:
>         print("when the request is GET inside ApplyGSPForm")
>         form = ApplyGSPForm(instance=model)
>
>     context = {'form': form, 'Message': message, 'action': action}
>     return render(request, 'ApplyGSP.html', context)
>
>
> *My urls.py:* 
>
> urlpatterns = [
>     re_path(r'^download/(?P<id>\d+)/$', views.download_filtered_gsp_patches, 
> name='GSPExtractFilter'),
>     path('ApplyGSPList/', login_required(views.ApplyGSPList.as_view(), 
> login_url='/gspapp/login/'), name='ApplyGSPList'),
>     path('ApplyGSPList/requestForm/', views.apply_gsp_request_form, 
> name='ApplyGSPRequestForm'),
>     re_path(r'^editApplyGSP/requestForm/(?P<id>\d+)/$', 
> views.apply_gsp_request_form, name='editApplyGSP'),
>     path('GSPReview/', views.gspreview, name='GSPReview'),
>
>
>

-- 
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/9e0220da-b804-4b69-8bd3-b94c1702c04a%40googlegroups.com.

Reply via email to