gpt4 book ai didi

python - 如何在我的 Django 模型中获取两个字段的乘积

转载 作者:行者123 更新时间:2023-12-04 09:36:10 25 4
gpt4 key购买 nike

我在 Django 中有以下类(class):

class Income(models.Model):
product=models.ForeignKey()
byproduct=models.ForeignKey()
quant_jan=models.DecimalField()
quant_feb=models.DecimalField()
price_jan=models.DecimalField()
price_feb=models.DecimalField()
.....
现在在我看来,我创建了以下变量:
monthly_income= list(0 for m in range(12))
我想用 quant*price 的乘积填充这个变量每个月(例如在 monthly_income[0] = quant_jan*price_jan 等)。
怎么能用python得到它?

最佳答案

您需要更好地规范化数据库。我会做的是更像这样的事情:
模型.py:

class MonthIncome(models.Model):

class Months(models.IntegerChoices):
JAN = 1
FEB = 2
MAR = 3
APR = 4
...

product= models.ForeignKey()
month = models.IntegerField(choices=Months.choices)
qty = models.DecimalField()
price = models.DecimalField()
created = models.DateTimeField(default=datetime.now)
View .py:
def my_view(request):
month_incomes = MonthIncome.objects.all().order_by('-month')
monthly_income = [m.qty * m.price for m in month_incomes]
...

或者,有一种方法可以直接在查询中进行乘法运算并使结果成为一个平面值列表,但它有点复杂。以上是最简单的。
要为每个月创建一个条目,您只需在 views.py 中执行此操作,它会从带有表单的模板中捕获数据:
View .py:
def create_month_income(request):
... # get data from POST or whatever
if request.method == "POST":
data = request.POST.dict()
product = Product.objects.get(id=data.get('product'))
new_month = MonthIncome.objects.create(product=product, qty=data.get('qty'), price=data.get('price'), month=data.get('month'))
new_month.save()
...
模板.html:
<form method="post" action="{% url 'create_month_income' %}">
<p><select name="product">
{% for product in products.all %}
<option value="{{ product.id }}">{{ product.name }}</option>
{% endfor %}
</select></p>
<p><input type="text" name="month" id="month" placeholder="Month (number)"></p>
<p><input type="text" name="price" id="price" placeholder="Price"></p>
<p><input type="text" name="qty" id="qty" placeholder="Quantity"></p>
<p><button type="submit" value="Submit"></p>
</form>
或者只是使用 Django 管理员为您需要数据的每个月手动创建一个新的数据库行(对象)。不确定您如何将模型输入的数据获取到系统中。

关于python - 如何在我的 Django 模型中获取两个字段的乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62576798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com