python - 在 Django 中插入重复的列值
问题描述
有什么办法可以将值复制到另一列,例如,每当我将数据上传到第 1 列时,值应该是相同的。我3000
在第 1 列,第 2 列的值应该自动写入3000
,可以在模型中欺骗吗?或者当插入查询而不是使用默认值时?提前致谢!。
电流输出
Column 1 Column 2
5000 5000
3650 5000
2000 5000
预期产出
Column 1 Column 2
5000 5000
3650 3650
2000 2000
模型.py
class Person(models.Model):
amount = models.CharField(max_length=50,blank=True, null=True)
amount_paid = models.CharField(max_length=60,default='5000', null=True)
解决方案
您可以简单地覆盖保存方法:
class Person(models.Model):
amount = models.CharField(max_length=50,blank=True, null=True)
amount_paid = models.CharField(max_length=60,default='5000', null=True)
def save(self, *args, **kwargs):
self.amount_paid = self.amount
super().save(*args, **kwargs)
但是没有必要存储重复值,除非你需要它,你可以简单地添加一个布尔字段,is_paid
并将其设置为 True 作为默认值。
给定的解决方案也存在一定的缺陷,即如果您更改金额,金额_已付款将自动更改。如果要在创建 Person 实例时更新 amount_paid ,则可以添加 if else 逻辑:
def save(self, *args, **kwargs):
if not self.pk: # instance not created yet
self.amount_paid = self.amount
super().save(*args, **kwargs)
或者,您可以使用 Django Queryset 批量更新amount_paid
. 例如:
from django.db.models import F
Person.objects.filter(pk__in=[1,2,3]).update(amount_paid=F('amount'))
推荐阅读
- python - 给定一维梯度形式的向量,如何通过一个轴调整图像大小?
- ruby - Ruby 有没有办法阻止用户在访问不同的函数/过程之前通过 case 调用函数/过程?
- c++ - 为什么当一个函数接受一个指针时,我们传递一个特定变量的地址,而不是一个指针?
- firebase - GoogleAuthProvider 在 Stackblitz 项目中工作,但在部署到 Firebase 托管时抛出 Unexpected Identifier
- asp.net-core - 来自 Rotativa.AspNetCore 的未处理异常
- ios - 覆盖项目和第三方的 NSLog
- reactjs - 单击按钮时未按预期过滤数组
- angular - Angular MatTable 不会使用来自表单的数据进行更新
- python - PySide6:当我使用自定义类的重写函数 sizeHint() 时出现错误“致命 Python 错误:无法从堆栈溢出中恢复”
- delphi - 虚拟树视图如何只显示孩子=isvisible 而不是母亲(isinvisible=false)