@ImLeftHanded

Как решить ошибку «'NoneType' object has no attribute 'group'» и «Article matching query does not exist »?

Добавил возможность удаления объектов, что привело к ошибкам
1) Теперь, когда я просто редактирую артикль или добавляю новый, вылетает ошибка
'NoneType' object has no attribute 'group'

2) До определенного момента удаление работало нормально, конкретно до того момента, пока не пошли айди дальше 9 (10, 11 и т.д.)
Теперь же, когда удалю объект, вылетает ошибка
Article matching query does not exist

view.py
def manage_articles(request):
    if not request.user.is_staff:
            return redirect('/')
    ArticleFormSet = modelformset_factory(Article, fields=('title', 'priceMazut', 'priceSPBT',
                                                           'priceDTl', 'priceDTm', 'priceDTz'))
    if request.method == 'POST':
        enurl = urllib.parse.urlencode(request.POST) 
        matchobj = re.search(r'del_btn\d+', enurl) 
        btnname = matchobj.group()
        pri_key = btnname[-1]
        if btnname:
            query = Article.objects.get(pk=pri_key).delete()
            formset = ArticleFormSet(request.POST, request.FILES)
            if formset.is_valid():
                formset.save()
                formset = ArticleFormSet(queryset=Article.objects.all())
                return redirect('/?$')
        else:
            formset = ArticleFormSet(request.POST, request.FILES)
            if formset.is_valid():
                formset.save()
                return redirect('/?$')
    else:
        formset = ArticleFormSet()
    return render(request, "table/manage_articles.html", {"formset": formset})


{{ formset.management_form }}
    {% for form in formset %}
        {{ form.id }}
        {{ form.instance.id }}
        {{ form.DELETE }}
       <tr class="edt {% if forloop.first  %} shadow {% endif %}"
               {% if forloop.counter|divisibleby:"2" %}style="background-color: white"
               {% else %} style="background-color: #F2F2F2"
               {% endif %}>

           <td>  {{ form.title }} </td>
           <td>{{ form.priceMazut }} </td>
           <td>{{ form.priceSPBT }} </td>
           <td>{{ form.priceDTl }} </td>
           <td>{{ form.priceDTm }} </td>
           <td>{{ form.priceDTz }} </td>
           <td><input type="submit" name="del_btn{{ form.instance.id }}" value="Delete"/></td>
           <td class="last"></td>
       </tr>
  • Вопрос задан
  • 204 просмотра
Решения вопроса 1
@ImLeftHanded Автор вопроса
def manage_articles(request):
    if not request.user.is_staff:
            return redirect('/')
    ArticleFormSet = modelformset_factory(Article, fields=('title', 'priceMazut', 'priceSPBT',
                                                           'priceDTl', 'priceDTm', 'priceDTz'))
    if request.method == 'POST':
        enurl = urllib.parse.urlencode(request.POST) 
        matchobj = re.search(r'del_btn\d+', enurl)
        if matchobj is not None:
            btnname = matchobj.group()
            pri_key = btnname[7:]
            if btnname:
                Article.objects.get(pk=pri_key).delete()
                formset = ArticleFormSet(request.POST, request.FILES)
                formset.save()
                return redirect('/?$')
        else:
            formset = ArticleFormSet(request.POST, request.FILES)
            if formset.is_valid():
                formset.save()
                return redirect('/?$')
    else:
        formset = ArticleFormSet()
    return render(request, "table/manage_articles.html", {"formset": formset})
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы