我正在尝试填充"余额";在基于"交易"的交易模型中;beginning_balance";在Accounts模型中,但我收到以下错误消息:
save((缺少2个必需的位置参数:"request"one_answers"pk">
我做错了什么。非常感谢。
型号.py
from django.db import models
class Accounts(models.Model):
account_nickname = models.CharField(max_length=15, unique=True)
beginning_balance = models.DecimalField(max_digits=12, decimal_places=2)
def __str__(self):
return self.account_nickname
class Transaction(models.Model):
transaction_date = models.DateField()
account_nickname = models.ForeignKey(Accounts, on_delete=models.CASCADE)
amount = models.FloatField()
balance = models.FloatField(null=True, blank=True, editable=False)
def save(self, request, pk):
get_beginning_balance = Accounts.objects.get(id=pk)
self.balance = get_beginning_balance
super().save(request, pk, *args, **kwargs)
def __str__(self):
return self.account_nickname
这是正确的查询。我意识到我没有提取正确的数据。
def save(self, *args, **kwargs):
get_beginning_balance =
Accounts.objects.filter(account_nickname=self.account_nickname).values("beginning_balance")
self.balance = get_beginning_balance
super().save(*args, **kwargs)
我相信,您在事务模型中的保存函数中尝试做的事情最好在views.py文件中完成。你可以根据在你的url中作为int:pk传递的pk-id来获得账户模型,比如
def view_name(request,pk):
然后,您可以使用get_object_or_404获得所需的Accounts对象。然后我会用Transactions.objects.create(您的参数(创建您的帐户余额。它最终应该看起来像这样:
def view_name(request,pk):
acc=get_object_or_404(Accounts, account_nickname=sample_account_nickname)
Transaction.objects.create(transaction_date=sample_date,
account_nickname=acc,
amount=sample_amount)
祝你好运!:D
您使用错误数量的参数覆盖Django Model保存函数。
如果你想在Django Admin中设置一些东西,你应该覆盖正确的方法,在ModelAdmin中,save_model()
将是合适的
save_model方法被赋予HttpRequest,一个模型实例ModelForm实例,以及基于是否添加的布尔值或者改变对象。重写此方法允许执行pre-or保存后操作。调用super((.save_model((保存对象使用Model.save((.