• Насколько актуальны данные книги (JavaScript, ООП, Python)?

    @Fedor_PV
    Я по 5-ой книге начинал Джанго учить, книга хорошая. Мне очень нравится. Но она для новичков. Там прям с нуля полного все разжевывается. Если опыт есть, то, конечно, она покажется скучной. А еще она хороша тем, что ее автор в интернете ведет ее поддержку: например если код устарел, он прям пишет прямым текстом на своем сайте - на такой то странице код устарел, не пишите так, а нужно теперь вот так то писать. Хороший мужик.
    Ответ написан
    Комментировать
  • Как написать CreateView для модели с ForeignKey?

    @Fedor_PV Автор вопроса
    В общем вот код, который работает (другие подходы не помогли):

    class CityCreate(CreateView):
        model = Cities
        fields = ['city_name', 'tags']
        template_name = 'countries/new_city.html'
    
        def get_success_url(self):
            return reverse('countries:cities', args=[self.country.id])
    
        def get_context_data(self, **kwargs):
            self.country = get_object_or_404(Countries, id=self.kwargs['country_id'])
            kwargs['country'] = self.country
            return super().get_context_data(**kwargs)
    
        def form_valid(self, form):
            self.country = get_object_or_404(Countries, id=self.kwargs['country_id'])
            form.instance.country = self.country
            messages.success(self.request, 'The city has been added to the list of visited places, thank you') 
            return super().form_valid(form)
    Ответ написан
    Комментировать
  • Django-taggit теги, отправленные через форму, не сохраняются в базе данных, почему??

    @Fedor_PV Автор вопроса
    Итак, господа, после нескольких часов танцов с бубном найдено решение! Чтобы принудительно сохранить теги в базе нужно на уровне функций представлений использовать цикл for для form.cleaned_data['tags'] и привязку тегов к объекту через код obj.tags.add(). На примере моей функции-представления, которая показана выше, рабочий код такой (может он и говнокод, но он РАБОТАЕТ, а лучше решения за сутки никто не смог предложить):
    @login_required
    def new_city(request, countries_id):
        country=Countries.objects.get(id=countries_id)
        if request.method != 'POST':
            form=CitiesForm()
        else:
            form=CitiesForm(data=request.POST)
            if form.is_valid():
                new_city=form.save(commit=False)
                new_city.country=country
                new_city.save()
                for tag in form.cleaned_data['tags']:
                    new_city.tags.add(tag)
                ....


    Потом вставляем в шаблон подобный код, как учил Дронов, и прекрасно все работает - теги сохраняются в базе через отправленную форму, прекрасно отображаются, через запятую, фильтруются, все отлично, господа!

    {% with names=city.tags.names %}
          {% if names.count > 0 %}
             Tags: {% for name in names %}{% if not forloop.first %}, {% endif %} <a href="...?tag=..."> {{ name }} </a> {% endfor %}
          {% endif %}
        {% endwith %}
    Ответ написан
    Комментировать