@uncle_rufuzzz

Что делать с AttributeError object has no attribute 'get'?

При сохранении экземпляра в БД постоянно выдается ошибка AttributeError 'UserBill' object has no attribute 'get.

Итак, имеется Django 4 и Python 3.9

Managers.py

class PaymentManager:
"""
Менеджер управления финансовыми операциями пользователей
"""
def __init__(self, request, model):
    self.request = request
    self.model = model

def create_bill(self):
    new_bill = self.model.objects.create(
        title=self.request.POST['title'],
        slug=slugify(translit(str(self.request.POST['title']), 'ru', reversed=True)),
        owner=self.request.user
    )
    new_bill.save()
    return new_bill


Views.py
class BillCreateView(CreateView):
model = UserBill
form_class = BillCreateForm
template_name = 'payment/new_bill_form.html'

def post(self, request, *args, **kwargs):
    new_bill = PaymentManager(request=self.request, model=self.model)
    return new_bill.create_bill()


Forms.py
class BillCreateForm(forms.ModelForm):
"""
Форма создания счета пользователя
"""
class Meta:
    model = UserBill
    fields = [
        'title',
    ]


Models.py
class UserBill(models.Model):
title = models.CharField('Название', max_length=255)
slug = models.SlugField('Идентификатор', max_length=255, db_index=True, unique=True)

owner = models.ForeignKey(TayleUser, related_name='own_bills', verbose_name='Счета', on_delete=models.CASCADE)
balance = models.PositiveSmallIntegerField('Баланс', default=1000)

register_date = models.DateTimeField('Дата регистрации', auto_now_add=True)
last_visit_date = models.DateTimeField('Дата последнего просмотра', auto_now=True)
active = models.BooleanField('Активен', default=True)

class Meta:
    verbose_name = 'Счета'
    verbose_name_plural = 'Счет'
    db_table = 'bills'

def get_absolute_url(self):
    return reverse('payment_detail', args=[str(self.slug)])


Беда в том что каждый раз при заполнении и отправке формы я получаю ошибку AttributeError 'UserBill' object has no attribute 'get'. Я пробовал писать и без managers.py прямо во вьхе результат тотже, но при этом в БД все сохраняется. Помогите пожалуйста понять что я упустил.

Спасибо за внимание.

spoiler

AttributeError at /bill/create/
'UserBill' object has no attribute 'get'
Request Method:	POST
Request URL:	http://127.0.0.1:8000/bill/create/
Django Version:	4.0.4
Exception Type:	AttributeError
Exception Value:	
'UserBill' object has no attribute 'get'
Exception Location:	/home/rufuzzz/Projects/tayle_project/venv/lib/python3.9/site-packages/django/middleware/clickjacking.py, line 27, in process_response
Python Executable:	/home/rufuzzz/Projects/tayle_project/venv/bin/python
Python Version:	3.9.2
Python Path:	
['/home/rufuzzz/Projects/tayle_project/core',
 '/usr/lib/python39.zip',
 '/usr/lib/python3.9',
 '/usr/lib/python3.9/lib-dynload',
 '/home/rufuzzz/Projects/tayle_project/venv/lib/python3.9/site-packages']
Server time:	Thu, 19 May 2022 19:44:29 +0300
Traceback Switch to copy-and-paste view
/home/rufuzzz/Projects/tayle_project/venv/lib/python3.9/site-packages/django/core/handlers/exception.py, line 55, in inner
                response = get_response(request) …
Local vars
/home/rufuzzz/Projects/tayle_project/venv/lib/python3.9/site-packages/django/utils/deprecation.py, line 136, in __call__
            response = self.process_response(request, response) …
Local vars
/home/rufuzzz/Projects/tayle_project/venv/lib/python3.9/site-packages/django/middleware/clickjacking.py, line 27, in process_response
        if response.get("X-Frame-Options") is not None: …
Local vars
Request information
USER
user1@mail.com

GET
No GET data

POST
Variable	Value
csrfmiddlewaretoken	
'llYfZuovSYd77T70wc1tiR61IbJOWod07Jq93TcXRUUf1cpYtfWjgR5bXkRWmbN8'
title	
'ячЯЧяссмчсям'
create	
'Зарегистрировать'
FILES
No FILES data

  • Вопрос задан
  • 614 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы