我有以下型号:
class Tarifa_Sem (models.Model):
limit_inferior_isr = models.DecimalField (max_digits = 10, decimal_places = 2)
limit_superior = models.DecimalField (max_digits = 10, decimal_places = 2)
cuota_fija_t = models.DecimalField (max_digits = 10, decimal_places = 2, blank = True)
percentage_over_excess = models.DecimalField (max_digits = 10, decimal_places = 2)
class Calculator_isr (models.Model):
rate = models.ForeignKey (Rate_Sem, on_delete = models.CASCADE, null = True, blank = True, related_name = 'calculators')
base_gravada = models.DecimalField (max_digits = 10, decimal_places = 2, null = True, blank = True)
limite_inf_calculo = models.DecimalField (max_digits = 10, decimal_places = 2, null = True, blank = True)
percentage_excent_li = models.DecimalField (max_digits = 10, decimal_places = 2, null = True, blank = True)
fixed_ quota = models.DecimalField (max_digits = 10, decimal_places = 2, null = True, blank = True)
我通过迭代basegravada字段的值来进行查询。你知道吗
results = [
Tarifa_Sem.objects.filter (limite_superior__gte = obj.base_gravada)
.values_list ('limite_inferior_isr', 'cuota_fija_t', 'percentage_over_excess')
. First ()
for obj in Calculadora_isr.objects.all ()
]
此查询返回以下列表:
[(Decimal ('133.22'), Decimal ('2.59'), Decimal ('6.40')),
(Decimal ('8790.96'), Decimal ('1649.34'), Decimal ('30 .00 ')),
(Decimal ( '2765.43'), Decimal ('292.88'), Decimal ('21 .36 ')),
(Decimal (' 8790.96 '), Decimal (' 1649.34 '), Decimal ('30 .00'))]
要保存,请使用create()方法:
for t in results:
... Calculadora_isr.objects.create (limite_inf_calculo = t [0],
percentage_excent_li = t [2], fixed_ quota = t [1]). Save ()
如果我指示要保留的列表的字段和索引,问题是它不会将它们保存在带有base\u gravated初始值的id中,如果不是,我会创建新值:
+------------------------------------------------------------------------------------+
| Model Calculadora_isr |
+--------------------------------------+----------------------+----------------------+
|id |base_gravada| limite_inf_calculo | fixed_ quota | percentage_excent |
+---+------------+---------------------+ ---------------------+ ---------------------+
|1 | 1000.00 | | | |
+---+------------+---------------------+ ---------------------+ ---------------------+
|2 | 10000.00 | | | |
+---+------------+---------------------+----------------------+ ---------------------+
|3 | 5000.00 | | | |
+---+------------+---------------------+ ---------------------+ ---------------------+
|4 | 10000.00 | | | |
+---+------------+---------------------+ ---------------------+ ---------------------+
|5 | | 133.22 | 2.59 | 6.40 |
+---+------------+---------------------+ ---------------------+ ---------------------+
|6 | | 8790.96 | 1649.34 | 30.00 |
+---+------------+---------------------+----------------------+ ---------------------+
|7 | | 2765.43 | 292.88 | 21.36 |
+---+------------+---------------------+ ---------------------+ ---------------------+
|8 | | 8790.96 | 1649.34 | 30.00 |
+---+------------+---------------------+ ---------------------+ ---------------------+
我需要的是能够保存Calculadora\u isr模型中的值,如下所示:
+------------------------------------------------------------------------------------+
| Model Calculadora_isr |
+--------------------------------------+----------------------+----------------------+
|id |base_gravada| limite_inf_calculo | fixed_ quota | percentage_excent |
+---+------------+---------------------+ ---------------------+ ---------------------+
|1 | 1000.00 | 133.22 | 2.59 | 6.40 |
+---+------------+---------------------+ ---------------------+ ---------------------+
|2 | 10000.00 | 8790.96 | 1649.34 | 30.00 |
+---+------------+---------------------+----------------------+ ---------------------+
|3 | 5000.00 | 2765.43 | 292.88 | 21.36 |
+---+------------+---------------------+ ---------------------+ ---------------------+
|4 | 10000.00 | 8790.96 | 1649.34 | 30.00 |
+---+------------+---------------------+ ---------------------+ ---------------------+
我需要帮忙谢谢
在创建
results
列表的过程中,还要添加实例的pk,然后使用它来更新实例。你知道吗你的问题对我来说有点不清楚,,,,但是试试这样的。你知道吗
另外,,
first()
表示在QuerySet
集合中的第一个,而不是数据库中的第一个(基于行id)。最好使用earliest('pk')
而不是first()
(IMHO)。两者都是QuerySet
方法。你知道吗希望对你有帮助。你知道吗
相关问题 更多 >
编程相关推荐