Сумма депозита с использованием Django - PullRequest
1 голос
/ 13 февраля 2020

Model.py

класс Клиенты (models.Model):

user = models.ForeignKey(User, on_delete=models.CASCADE)

contact = models.BigIntegerField(unique=True)

amount = models.BigIntegerField()

type = models.CharField(max_length=1)`

Form.py

класс Deposit_Form (forms.Form):

amount = forms.IntegerField(min_value=200, label="Enter amount u want to deposit")

View.py

класс Log_in (TemplateView):

template_name = 'login.html'

def get(self, request, *args, **kwargs):

    Form = Login()

    return render(request, self.template_name, {'form': Form})

def post(self, request):

    username = self.request.POST.get('username').strip()

    password = self.request.POST.get('password').strip()

    if username is None or password is None:

        return HttpResponse({'Doesnt exist'}, status=HTTP_400_BAD_REQUEST)

    user = authenticate(username=username, password=password)

    if not user:

        return HttpResponse({'Invalid candidate '}, status=HTTP_404_NOT_FOUND)

    return redirect('customer_menu')

def customer_menu (запрос):

if "user_id" in request.session:

    return render(request, 'customer_menu.html')

класс Deposit (TemplateView):

template_name = 'deposit.html'

def get(self, request, *args, **kwargs):

    Form = Deposit_Form()

    return render(request, self.template_name, {'form': Form})

@staticmethod

def post(request):

    if "user_id" in request.session:

        data = request.POST.get

        try:

            deposit_amount=data('deposit_amount')

            customer = CustomerModel(

                amount = deposit_amount+amount
            )
            customer.save()

            return HttpResponse('action performed successfully', 500)

        except Exception as e:

            return HttpResponse("failed : {}".format(e), 200)

теперь я не могу понять, как можно внести сумму депозита, она показывает ошибку в функции записи класса депозита сумма = deposit_amount + сумма

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Если я правильно понимаю ваш вопрос, вы хотите увеличить поле суммы в вашей модели клиента. Но сначала вы должны найти свой объект, который хотите обновить. И вы не можете напрямую CustomerModel(amount=deposit_amount+amount). Вы можете использовать функцию F() для этого. Например: CustomerModel.filter(pk=id).update(amount=F('amount')+deposite_amount)

Подробную информацию о функции F () можно найти здесь

Редактировать: В качестве другого способа вы можете найти свой объект CustomerModel с помощью get() метод и увеличьте сумму вашего поля. После этого вы можете сохранить свой объект. Вот так:

customer = CustomerModel.objects.get(pk=id) #you can change query field
customer.amount = customer.amount + data('deposite_amount')
customer.save()
0 голосов
/ 13 февраля 2020

В чем ошибка?

убедитесь, что это поле может быть пустым

user = models.ForeignKey(User, on_delete=models.CASCADE)

contact = models.BigIntegerField(unique=True)

amount = models.BigIntegerField()

type = models.CharField(max_length=1)`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...