我有一个模型是这样的:
class AddCoffee(models.Model):
user = models.CharField(max_length=50)
coffee_name = models.CharField(max_length=50)
coffee_price = models.CharField(max_length=10)
现在,从这个模型中,我得到了所有的coffee_name
:
coffee_names = AddCoffee.objects.values_list('coffee_name', flat=True)
现在,我想做的是(即使这里有一些密切相关的话题,我也找不到任何方法):
生成len(coffee_names)
ChoiceField
,标签是每个咖啡名,值是从0到50的列表。像这样:
class RequestCoffeeForm(forms.Form):
coffee_names = AddCoffee.objects.values_list('coffee_name', flat=True)
for name in coffee_names:
forms.ChoiceField(label="{}".format(name),
choices=[x for x in range(51)])
"""
Suppose coffee_names = ["ABC", "DEF"]
I should have two `ChoiceFields` as follows:
ABC = forms.ChoiceField(label="ABC", choices=[x for x in range(51)])
DEF = forms.ChoiceField(label="DEF", choices=[x for x in range(51)])
"""
我怎样才能做到这一点?关于以后如何将这些动态字段存储在模型/视图中,我的脑子里有些模棱两可。你知道吗
我试过:
class RequestCoffeeForm(forms.Form):
coffee_names = AddCoffee.objects.values_list('coffee_name', flat=True)
for name in coffee_names:
name = forms.ChoiceField(label="{}".format(name), choices=((str(x), x) for x in range(51)))
在我看来:
@login_required(login_url="login/")
def request_coffee_page(request):
form = RequestCoffeeForm(request.POST or None)
return render(request, "request_coffee.html", {'form': form})
然后在我的模板中:
{{ form.name.label_tag }}
{{ form.name }}
上面只打印最后一个咖啡名。我怎样才能把它们全部打印出来?你知道吗
choices
必须是iterable of 2-tuples。有关示例,请参见here。你知道吗我没时间试一下,但这可能有用吗
相关问题 更多 >
编程相关推荐