Django在一个窗体上有两个模型



提前感谢。这是我在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 }}

最新更新