提前感谢。这是我在StackOverflow上的第一个问题。我是Django的新手,我正在尝试创建一个库存清单,让人们快速查看库存并在计数列中放置一个数字。我缺少的是如何将计数字段链接到item_name(用item_name迭代计数字段。当我输入值并提交时,它会使每个计数字段等于第一个计数字段。请参阅屏幕截图的附件。
这是我的型号。py
class InventoryItem(models.Model):
item_name = models.CharField(max_length=200, null=True)
class InventoryChecklist(models.Model):
count = models.CharField(max_length=10, null=True)
date_posted = models.DateTimeField(default=timezone.now)
item = models.ForeignKey(InventoryItem, on_delete=models.CASCADE)
表单.py
class InventoryCheck(ModelForm):
class Meta:
model = InventoryChecklist
fields = '__all__'
视图.py
def DailyCount(request):
items = InventoryItem.objects.all()
form = InventoryCheck
if request.method == 'POST':
form = InventoryCheck(request.POST)
if form.is_valid():
form.save()
return redirect('/')
context = {'items':items, 'form':form}
return render(request, 'checklist/dailycount.html', context)
模板
<table class="table table-sm">
<tr>
<th>Item Name</th>
<th>Count</th>
<th>Date</th>
</tr>
<form action="" method='POST'>
{% csrf_token %}
{% for item in items %}
<tr>
<td>{{ item.item_name }}</td>
<td>{{ form.count }}</td>
</tr>
{% endfor %}
<input type="submit" name="Save" />
</form>
</table>
提交前呈现的模板提交后呈现的模板
form = InventoryCheck
正在传入类,但不是初始化的对象。你的表格不是真的。。。可迭代(即,当您执行form.count
时(?你是说要做item.count
吗?
编辑:既然你正在抓取所有项目,你应该改为:
items = InventoryChecklist.objects.all()
然后解决这个问题。这样,在你的模板中,你可以做:
{{ item.item.item_name }}
{{ item.count }}