我是Django的新手,目前我正在尝试创建一个表单,其中应该包含另一个模型的所有现有对象的输入字段。假设我想在家里管理我的用品,并确保我有足够的各种产品在不同的存储位置。
例如,我希望确保存储位置bathroom
和basement
始终具有充足的toilet paper
供应。我不需要在位置kitchen
中使用toilet paper
。存储位置是预定义的,可通过模型使用。我无法' I don "我找不到任何方法来创建Supply
表单,该表单基于所有可用的StorageLocation
对象动态生成MinimumQuantity
对象的表单域。
创建供应"tailet paper"时,我的表单应如下所示:
supply name: <input example: "toilet paper">
minimum supply quantities
bathroom - amount: <input example: 6>
kitchen - amount: <input example: 0>
basement - amount: <input example: 3>
我在这里有点迷路了,任何提示都将不胜感激。
这是我目前的代码(缩短):
models.py:
class Supply(models.Model):
name = models.CharField(max_length=50)
class StorageLocation(models.Model):
name = models.CharField(max_length=50)
class MinimumQuantity(MinimumQuantity):
storage_location = models.ForeignKey(StorageLocation, on_delete=models.PROTECT)
supply = models.ForeignKey(Supply, on_delete=models.PROTECT)
amount = models.IntegerField()
views.py:
class SupplyCreateView(CreateView):
model = Supply
template_name = "supplies_form.html"
fields = [ 'name', ]
供应品_表单. html:
<div class="card-body">
{% csrf_token %}
{{ form|crispy }}
</div>
我在stackoverflow和其他网站上偶然发现了各种相关的问题,并摆弄了一下表单集,但我的问题似乎是:
1.我有一个从供应到最小数量的一对多关系,想不出任何方法来告诉供应,并且
1.虽然所有StorageLocation对象都已存在,但MinimumQuantity对象不存在。
我是不是把这个构造弄得太复杂了,有没有一种方法可以完全不用MinimumQuantity模型来解决整个问题?谢谢!
1条答案
按热度按时间n9vozmp41#
在这里,我们必须使用ModelForm并设置fields属性,以包含您希望包含在表单中的MinimumQuantity模型的字段,在您的示例中,这将是storage_location字段和amount字段。
现在,首先将其添加到代码中并更改SupplyCreateView:
然后在supplies_form. html中这样做: