Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. def show_category_feature_set(request):
  2.  
  3. category_id = request.GET.get('category')
  4. category = Category.objects.get(id=category_id)
  5. features = category.features.all().values('name', 'id')
  6. response_data = {}
  7. try:
  8. response_data['features'] = list(features)
  9. except:
  10. response_data['error'] = "Sorry, couldn't load any features"
  11. return JsonResponse(response_data)
  12.  
  13. class Feature(models.Model):
  14. name = models.CharField(max_length=100, blank=False)
  15.  
  16. class Category(models.Model):
  17. name = models.CharField(max_length=50, blank=False)
  18. slug = models.SlugField(unique=True)
  19. features = models.ManyToManyField(Feature, through='FeatureCategorization' )
  20.  
  21. class FeatureCategorization(models.Model):
  22. category = models.ForeignKey(Category)
  23. feature = models.ForeignKey(Feature)
  24.  
  25. class ListingForm(forms.ModelForm):
  26. def __init__(self, *args, **kwargs):
  27. super(ListingForm, self).__init__(*args, **kwargs)
  28. self.helper = FormHelper()
  29. self.helper.form_id = 'listing'
  30. self.helper.form_show_errors = True
  31. self.helper.form_method = 'post'
  32. self.helper.form_action = 'submit'
  33. self.helper.add_input(Submit('submit', 'Submit'))
  34.  
  35. class Meta:
  36. model = Listing
  37. fields = ['title', 'event_types', 'category', 'features', 'description', 'blog_url', 'website', 'pricing_page']
  38.  
  39. widgets = {
  40. 'event_types': forms.CheckboxSelectMultiple(),
  41. 'features': forms.CheckboxSelectMultiple()
  42. }
  43.  
  44. <div class="form-group" id="div_id_features">
  45. <label class="control-label requiredField" for="id_features_0">Features<span class="asteriskField">*</span></label>
  46. <div class="controls" id="listing">
  47. <div class="checkbox">
  48. <label class=""><input id="id_features_1" name="features" type="checkbox" value="10">Online Registration</label>
  49. </div>
  50. <div class="checkbox">
  51. <label class=""><input id="id_features_2" name="features" type="checkbox" value="11">PCI Compliance</label>
  52. </div>
  53. </div>
  54. </div>
  55.  
  56. $( "#id_category" ).change(function () {
  57. var category = $( this ).val();
  58.  
  59. $.ajax({
  60. url: '/ajax/category_features/',
  61. data: {
  62. 'category': category
  63. },
  64. dataType: 'json',
  65. success: function ( response_data ) {
  66. $("#div_id_features").empty().append(response_data.features.map((feature) => {
  67. return $('<input >', {
  68. type : 'checkbox',
  69. id: 'id_features_' + feature.id,
  70. name: 'features',
  71. value: feature.id,
  72. }).wrap("<label > </label>").text(feature.name);
  73. }));
  74. }
  75. });
  76. });
  77.  
  78. <div id="div_id_features" class="form-group">
  79. <input type="checkbox" id="id_features_10" name="features" value="10">
  80. <input type="checkbox" id="id_features_11" name="features" value="11">
  81. </div>
  82.  
  83. $('#features').empty().append(features[$(this).val()].map(feature => $('<div class="checkbox"><label>' +
  84. '<input type="checkbox" name="features[]" value="' + feature.id + '"/>' + feature.name +
  85. '</label>')
  86. ));
  87. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement