Python 新开户时,如何默认显示余额为零?

Python 新开户时,如何默认显示余额为零?,python,html,django,Python,Html,Django,我有一个页面显示用户有多少余额。我把那个余额放在管理页面上。但当有人第一次开账户时,我想让他们看到他们的余额为零。怎么做 models.py views.py HTML页面 可以使用默认关键字参数为字段设置默认值,如下所示 金额=型号。十进制字段最大位数=12,小数位数=2,默认值=0 如果没有明确设置,那么amount字段的值将为0。我认为首先可能需要稍微修改您的模型,并在此处使用一个。这本质上是一种平衡,但有一个unique=True约束,这样用户最多可以有一个平衡,而不是多个平衡。此外,建

我有一个页面显示用户有多少余额。我把那个余额放在管理页面上。但当有人第一次开账户时,我想让他们看到他们的余额为零。怎么做

models.py

views.py

HTML页面


可以使用默认关键字参数为字段设置默认值,如下所示

金额=型号。十进制字段最大位数=12,小数位数=2,默认值=0
如果没有明确设置,那么amount字段的值将为0。

我认为首先可能需要稍微修改您的模型,并在此处使用一个。这本质上是一种平衡,但有一个unique=True约束,这样用户最多可以有一个平衡,而不是多个平衡。此外,建议使用而不是引用User类,因为如果以后更改用户模型,它现在将引用新模型。事实上,使用具有平衡的自定义用户模型可能是一个更好的建模选择,因为这样,当用户存在时,就不会出现故障,但是相关的平衡还不存在

from django.contrib.auth import get_user_model

class Balance(models.Model):
    amount = models.DecimalField(max_digits=12, decimal_places=2, default=0)
    owner = models.OneToOneField(get_user_model(), on_delete=models.CASCADE)

    class Meta:
        verbose_name_plural = 'Balance'

    def __str__(self):
        return f'{self.owner} Balance'
现在,我们可以使用以下方法渲染:

{% if balance.amount %}
    <h2>Your Balance is Rs. {{ balance.amount }}</h2>
{% else %}
    <h2>balance zero</h2>
{% endif %}

在您的模型字段中使用属性default=0

嘿,伙计,每当有人注册帐户时,我想在html页面中显示他们的余额为零。这是不显示。每当我分配一些值时,它就会显示,否则它会给我余额匹配查询不存在。@Housi,那是因为amount变量没有值。将其设置为0将在html页面中显示0如何为新注册用户默认设置为0?我在这个阶段感到困惑。只需在DecimalField中设置关键字参数default=0,就会使每个新的余额对象初始化为0 amount,除非另有规定。@Housi如果您想在用户注册时也创建一个新的余额对象,我建议查看信号并创建您自己的customuser模型。此外,您可能希望使用OneToOneField而不是ForeignKey如何确保在用户注册时创建余额?您确定要在此处使用ForeignKey吗?这意味着一个给定的用户可以有几乎数百万的余额…当一个用户注册时,我会在管理页面中看到它。但我想先让他看看默认情况下他的余额为零。ForeignKey是指拥有这个金额的用户名的所有者。请回答相关的问题。@Housi:但是建模是一个非常相关的方面。事实上,大多数问题都是从糟糕的建模开始的,从那以后,需要在表单、视图、信号等中进行修复。最终,它会导致大量额外的逻辑,通常比正确建模更不健壮。当我进行迁移时,它可以工作,但在迁移时不会运行。相反,它给了我一个错误。@Housi:如果您的一些视图使用例如balance\u set等文件C:\Users\Bilal\Envs\trial\lib\site packages\django\db\backends\base\schema.py,第603行,\u alter\u field exclude=meta\u index\u name,文件C:\Users\Bilal\Envs\trial\lib\site packages\django\db\backends\base\schema.py,第1129行,如果type_uu不是None且infodict['type']为空,则在u约束_u名称中键入:KeyError:'type'我不明白。这是迁移后的错误。请回答此问题?
<h2>Your Balance is Rs. {{amount}}</h2
from django.contrib.auth import get_user_model

class Balance(models.Model):
    amount = models.DecimalField(max_digits=12, decimal_places=2, default=0)
    owner = models.OneToOneField(get_user_model(), on_delete=models.CASCADE)

    class Meta:
        verbose_name_plural = 'Balance'

    def __str__(self):
        return f'{self.owner} Balance'
@login_required
def balance(request):
    try:
        balance = request.user.balance
    except Balance.DoesNotExist:
        balance = None
    return render(request, 'nextone/balance.html', {'balance': balance})
{% if balance.amount %}
    <h2>Your Balance is Rs. {{ balance.amount }}</h2>
{% else %}
    <h2>balance zero</h2>
{% endif %}