我是Django的新手并尝试创建一个用户可以选择值的选项。有人可以指导如何继续吗?
我附上了模型供您参考,用户应该能够选择BU,团队,级别,产品和渠道的值。此外,在选择BU时,团队应该更新,等等。请建议。
class Master_Table(models.Model):
Key_Variable=models.CharField(max_length=255,primary_key=True)
BU = models.CharField(max_length=20)
Team = models.CharField(max_length=20)
Level = models.CharField(max_length=20)
Product= models.CharField(max_length=20)
Channel = models.CharField(max_length=20)
以下是视图
def index(request):
queryset=Master_Table.obects.all()
context={ "object_list" : queryset }
return render(request,'compmixapp/index.html',context)
HTML
<form>
<input list="BU" name="BU"> <br /> <br>
<datalist id="BU">
<option value={% for obj in object_list %}
{{obj.BU}}
{% endfor %}
>
</form>
答案 0 :(得分:1)
您可以在models.py
中设置选项 BU
的示例可以为您的所有属性完成。
BU_CHOICES = (
('val','displayName'),
('val2', 'displayName2'),
('val3','displayName3'),
)
class Master_Table(models.Model):
BU = models.CharField(choices=BU_CHOICES, default='val')
希望这有帮助!
答案 1 :(得分:0)
您缺少引号,并且您定义for loop
的方式在语义上是错误的。
将HTML更改为以下
<form>
<input list="BU" name="BU"><br/><br>
<datalist id="BU">
{% for obj in object_list %}
<option value="{{obj.BU}}">
{% endfor %}
</form>
导致只显示选项的一个值的问题是以下部分,它在语法上是正确的,但在语义上错误,产生的结果与您预期的不同。
<option value={% for obj in object_list %}
{{obj.BU}}
{% endfor %}
>
正在讨厌的事情是,datalist
只获得一个值,即传递给它的querylist中的所有值。
进一步详细说明,假设Master_Table
的查询集返回a, b, c, d
个对象。所以你编写的循环会生成以下HTML
<form>
<input list="BU" name="BU"><br/><br>
<datalist id="BU">
<option value=a.BU b.BU c.BU d.BU>
</form>