Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Listing(models.Model):
- realtor = models.ForeignKey(Realtor, on_delete=models.CASCADE, verbose_name='Риелтор')
- category = models.ForeignKey(Category, on_delete=models.CASCADE, verbose_name='Категория')
- region = models.ForeignKey(Region, on_delete=models.CASCADE, verbose_name='Область')
- city = models.ForeignKey(City, on_delete=models.CASCADE, verbose_name='Город')
- district = models.ForeignKey(District, on_delete=models.CASCADE, verbose_name='Район')
- title = models.CharField(max_length=200, verbose_name='Заголовок')
- landmark = models.CharField(blank=True, max_length=200, verbose_name='Ориентир')
- ...
- def __str__(self):
- return self.title
- class Category(models.Model):
- name = models.CharField(max_length=100, verbose_name='Название')
- slug = models.SlugField(blank=True)
- def __str__(self):
- return self.name
- def get_absolute_url(self):
- return reverse('category_view', kwargs={'category_slug': self.slug})
- class Meta:
- verbose_name = 'Категория'
- verbose_name_plural = 'Категории'
- def pre_save_category_slug(sender, instance, *args, **kwargs):
- if not instance.slug:
- slug = slugify(translit(str(instance.name), reversed=True))
- instance.slug = slug
- pre_save.connect(pre_save_category_slug, sender=Category)
- @login_required
- def listing_add(request):
- logos = Logo.objects.all()
- feedbacks = Feedback.objects.all()
- categories = Category.objects.all()
- form = ListingForm()
- if request.method == "POST":
- form = ListingForm(request.POST, request.FILES)
- if form.is_valid():
- listing = form.save(commit=False)
- listing.realtor = request.user.realtor
- listing.save()
- return redirect('dashboard')
- return render(request, 'listings/listing_add.html', {
- 'logos': logos,
- 'form': form,
- 'categories': categories,
- 'feedbacks': feedbacks
- })
- {% block content %}
- <section id="listing_add" class="bg-light py-5">
- <div class="container">
- <div class="row">
- <div class="col-md-6 mx-auto">
- <div class="card">
- <div class="card-header bg-primary text-white">
- <h4>
- <i class="fas fa-plus"></i> Добавить объявление</h4>
- </div>
- <div class="card-body">
- <form method="POST" novalidate enctype="multipart/form-data">
- {% csrf_token %}
- {% bootstrap_form form %}
- <input type="submit" value="Добавить" class="btn btn-secondary btn-block">
- </form>
- </div>
- </div>
- </div>
- </div>
- </div>
- </section>
- {% endblock %}
- <form id="searchForm" data-models-url="{% url 'ajax_load_models' %}" action="{% url 'search' %}" method="get">
- <div class="row">
- <div class="form-group col-4">
- {{ form.car_make }}
- </div>
- <div class="form-group col-4">
- {{ form.car_model }}
- </div>
- </div>
- <div class="form-group col-4">
- <input type="submit" value="Search" class="submit">
- </div>
- </form>
- $("#id_car_make").change(function () {
- var url = $("#searchForm").attr("data-models-url"); // get the url of the `load_cities` view
- var carMakeId = $(this).val(); // get the selected car make ID from the HTML input
- $.ajax({ // initialize an AJAX request
- url: url, // set the url of the request (= localhost:8000/hr/ajax/load-cities/)
- data: {
- 'car_make': carMakeId // add the car make id to the GET parameters
- },
- success: function (data) { // `data` is the return of the `load_models` view function
- $("#id_car_model").html(data); // replace the contents of the model input with the data that came from the server
- }
- });
- });
- def load_models(request):
- car_make_id = request.GET.get('car_make')
- car_models = CarModel.objects.filter(car_make_id=car_make_id).order_by('name')
- return render(request, 'leases/partials/car_model_dropdown_list_options.html', {'car_models': car_models})
- <option value="">Model</option>
- {% for car_model in car_models %}
- <option value="{{ car_model.pk }}">{{ car_model.name }}</option>
- {% endfor %}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement