python - 我们如何为 django 类字段使用 python for 循环变量?
问题描述
我正在将 ajax 数据发送到下面的视图中,我想将其保存在我创建的模型中(如下所述)。问题是,在那个模型中,我想要 26 个字段作为月份,所以我通过 for 循环中的 add_to_class 创建了它。我不知道用户将输入多少个月,所以我必须在视图中循环列表并将数据保存为:
a = '100000'
b = '120000'
c = '15000'
其中 a、b、c 是月份,其余值默认为 0。
这是模型
class sold(models.Model):
car = models.ForeignKey(Car, on_delete=models.CASCADE)
Buyer = models.ForeignKey(buyer, on_delete=models.CASCADE)
total = models.IntegerField()
deposit = models.IntegerField()
balance = models.IntegerField()
months = models.IntegerField(default=12)
tracker = models.IntegerField()
insurance = models.IntegerField()
def __str__(self):
return f'{self.car} {self.Buyer} {self.total} {self.balance}
for i in ascii_lowercase:
sold.add_to_class('%s'%i, models.CharField(default=0, max_length=255,null=True, blank=True))
注意:我用 str 和 int 尝试了 range(1, 27) 但没有成功。
视图.py
def sale_car_data(request):
if request.method == 'POST':
check = request.POST['car']
# if soldTo.objects.filter(car__chasis=check).exists():
# return HttpResponse('Already Exist')
if 1==1: #Some condition here
insurance = request.POST['insurance']
month = request.POST['month']
installment = request.POST.getlist('installment')
installment = [json.loads(item) for item in installment]
sale = sold(car=pro, Buyer=buyer, total=total, deposit=deposit, balance=balance,
tracker=tracker, insurance=insurance, months=month, )
sale.save()
installment = installment[0]
test = sold.objects.get(car=pro, Buyer=buyer)
# also tried with inline for loop
for month_l, j in zip(ascii_lowercase, installment):
#test(f'{month_l}={j}') #field should be dynamic by the loop variable OR
test.month_l = j
test.save()
return HttpResponse('saved')
return HttpResponse('failed')
解决方案
根据评论,我建议将分期付款移动到另一个模型并将其与主键或采购订单参考链接。有了这个,您可以在将来更新和处理分期付款,或者您可以单独跟踪它。
因此,您的模型将被视为这样(仅作为示例):
PurchaseID | Installment Month | Status
1 | 10 | Paid
1 | 12 | Pending
推荐阅读
- java - 如何解决:javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/xml/ws/soap/SOAPFaultException
- ios - 错误:应为“/* Begin”、“/* End”、“\””或 [A-Za-z0-9_.],但找到“/”
- simd - GCC 不断抱怨 AVX512 函数 _mm512_cvt_roundpd_epi64 的“错误:不正确的舍入操作数”
- php - 无法滚动 -
- android - 尝试从材质组件渲染 MaterialButton 时出错
- python - 在 Python 中解析日期并检索特异性
- pycharm - pycharm中是否有键盘快捷键可以导航到最近活动的选项卡
- python - Python。在“for循环”中获取字典值
- python - 使用 sqlalchemy 连接 teradata DB
- javascript - TypeError: Object(...) is not a function reactjs