Django如何在vi中保存模型中的对象

2024-10-01 17:22:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python3.7上运行django1.10。在

我有一个问题,当我试图保存一个对象后,从一个模型应用了一个函数。在

{{1>要做的是{cd2>要做的事情。 然后,我在这个类中创建了一个名为acheter的方法,它带有一个参数id_achat,可以减去不同数额的钱。在

当我在shell中运行命令a.acheter(id_achat)(其中a是一个klient对象,id_achat是一个整数)时,一切正常,当我运行a.argent时,减法已经完成。在

但是,在interface_du_klient.html中,我添加了一些链接,以将用户重定向到名为achat的视图。在这个视图中,我对用get_object_or_404方法调用的klient对象调用了acheter方法,但是这个klient对象的属性argent没有被修改。在

这里你可以看到我的models.py:

from django.db import models
from django.contrib import admin
import decimal

class klient(models.Model):
    id_klient=models.CharField(max_length=100, primary_key=True)
    nom=models.CharField(max_length=100)
    prenom=models.CharField(max_length=100)
    argent=models.DecimalField(decimal_places=2,max_digits=4)
    membre=models.IntegerField() # 0 pour non membre, 1 pour membre KFet
    date = models.DateTimeField(auto_now_add=True, auto_now=False, 
                                verbose_name="Date d'enregistrement")
    nombre_biere=models.IntegerField(default=0)
    nombre_pinte=models.IntegerField(default=0)
    nombre_cafe_ou_the=models.IntegerField(default=0)
    nombre_canette=models.IntegerField(default=0)
    def __str__(self):
        return "{0} {1}".format(self.nom,self.prenom)
    def acheter(self,id_achat):
        if self.membre==0:
            a=1
        else:
            a=0.8
        if id_achat==1:          # id_achat : {1:bière 33cl, 2:bière 25cl, 3:pinte, 4:café/thé, 5:canette}
            self.argent=self.argent-decimal.Decimal(3*a)
            self.nombre_biere+=1                            ## bière 33cl
            self.save()
        elif id_achat==2:
            self.argent=self.argent-decimal.Decimal(2.2*a)
            self.nombre_biere+=1                            ## bière 25cl
            self.save()
        elif id_achat==3:
            self.argent=self.argent-decimal.Decimal(2*a)
            self.nombre_pinte+=1                            ## pinte Blondi
            self.save()
        elif id_achat==4:
            self.argent=self.argent-decimal.Decimal(0.4*a)
            self.nombre_cafe_ou_the+=1                      ## café/thé
            self.save()
        elif id_achat==5:
            self.argent=self.argent-decimal.Decimal(0.8*a)
            self.nombre_canette+=1                          ## canette
            self.save()
        pass

class achetables(models.Model):
    nom=models.CharField(max_length=100)
    prix=models.DecimalField(decimal_places=1,max_digits=4)
    def __str__(self):
        return "{0}".format(self.prix)

这是我的views.py:

^{pr2}$

这是我的interface_klient.html:

<h1>Bienvenue sur le site de la KFet !</h1>


<h3>Compte de {{client.nom}} {{client.prenom}}. Il y a {{client.argent}} euros sur son compte.</h3>



<p><a href="{% url "accueil" %}">Retour accueil</a>

<p><a href="{% url "achat" id_bouffon=client.id_klient id_ach=1 %}">Acheter biere 33cl</a>

<p><a href="{% url "achat" id_bouffon=client.id_klient id_ach=2 %}">Acheter biere 25cl</a>

<p><a href="{% url "achat" id_bouffon=client.id_klient id_ach=3 %}">Acheter pinte Blondi</a>

如果你想看我的urls.py,我可以编辑我的帖子,但我认为它不是来自这个文件。在

提前感谢任何能帮助我的人。在


Tags: selfclientidmodelssavemaxdecimalintegerfield

热门问题