【发布时间】:2021-11-24 02:10:11
【问题描述】:
有时它可以正常工作,有时它会显示错误。
管理员
models.py
class BarterAdminWallet(models.Model):
admin_wallet_id = models.BigAutoField(primary_key=True)
admin_wallet_balance = models.DecimalField(max_digits=60, decimal_places=2, default = 0.00)
admin_tokens_assigned = models.DecimalField(max_digits=60, decimal_places=2, default = 0.00)
admin_tokens_earned = models.DecimalField(max_digits=60, decimal_places=2, default = 0.00)
admin_tokens_bought = models.DecimalField(max_digits=60, decimal_places=2, default = 0.00)
class BarterAdminActionsTokens(models.Model):
action_tokens_id = models.BigAutoField(primary_key=True)
account_activation_tokens = models.DecimalField(max_digits=30, decimal_places=2, default = 0.00)
newsletter_subscription_tokens = models.DecimalField(max_digits=30, decimal_places=2, default = 0.00)
name_tokens = models.DecimalField(max_digits=30, decimal_places=2, default = 0.00)
surname_tokens = models.DecimalField(max_digits=30, decimal_places=2, default = 0.00)
add_languages_tokens = models.DecimalField(max_digits=30, decimal_places=2, default = 0.00)
mobile_phone_tokens = models.DecimalField(max_digits=30, decimal_places=2, default = 0.00)
avatar_image_tokens = models.DecimalField(max_digits=30, decimal_places=2, default = 0.00)
profile_description_tokens = models.DecimalField(max_digits=30, decimal_places=2, default = 0.00)
dob_tokens = models.DecimalField(max_digits=30, decimal_places=2, default = 0.00)
linkedin_profile_tokens = models.DecimalField(max_digits=30, decimal_places=2, default = 0.00)
facebook_profile_tokens = models.DecimalField(max_digits=30, decimal_places=2, default = 0.00)
address_1_tokens = models.DecimalField(max_digits=30, decimal_places=2, default = 0.00)
address_2_tokens = models.DecimalField(max_digits=30, decimal_places=2, default = 0.00)
用户
views.py
adminwallet = BarterAdminActionsTokens.objects.get()
registration_tokens = adminwallet.account_activation_tokens
adminwallet = BarterAdminWallet.objects.get()
adminwallet.admin_wallet_balance = adminwallet.admin_wallet_balance - float(registration_tokens)
adminwallet.admin_tokens_assigned = adminwallet.admin_tokens_assigned + float(registration_tokens)
adminwallet.save()
token_status.user_account_activation_token_status = "Awarded"
token_status.save()
代码说明
- 所有与数学相关的字段都是小数。
- 相同的代码,在计算时有时会完美计算并在某些情况下显示错误。
- 此外,此代码在其他应用程序中运行良好。
【问题讨论】:
-
registration_tokens不是已经是Decimal了吗?为什么要在计算之前进行类型转换? -
我试过了,但没有成功。
-
让我试试
-
它工作我不应该改变它然后为什么它发生在开始
标签: python python-3.x django django-models typeerror