我正在学习Django,我需要允许该应用的用户通过模板向item_name字段添加更多选项,但我不知道如何实现这一点。谢谢您的帮助。
这是我的模特
class ItStore(models.Model):
type_choice = (
('Printer Catridge', 'Printer Catridge'),
('UPS', 'UPS'),
('UPS Battery', 'UPS Battery'),
('Mouse', 'Mouse'),
('Keyboard', 'Keyboard'),
)
item_name = models.CharField(max_length='100', blank=True, null=False, choices=type_choice)
quantity = models.IntegerField(default='', blank=True, null=False)
这是我的观点
def itstore_create(request):
form = ItStoreCreateForm(request.POST or None)
submit = "Create IT Store Items"
if form.is_valid():
instance = form.save(commit=False)
instance.save()
message = instance.item_name + " Successfully Created"
messages.success(request, message)
return redirect("items:itstore_list")
context = {
"form": form,
"title": "CREATE ITEM",
}
return render(request, "store_form.html", context)
这是我的表单
class ItStoreCreateForm(forms.ModelForm):
class Meta:
model = ItStore
fields = ['item_name', 'quantity']
答案 0 :(得分:1)
您无法在模型上定义choices=
。但是,在模型之外定义默认选项列表。
my_choices = (
"foo",
"bar",
"pop",
)
class MyModel(models.Model):
my_field = models.CharField(max_length=100)
然后在您的视图中,您想要导入该元组并将其传递给您的模板:
from my_app.models import my_choices
def my_view(request, *a, **kw):
# view logic
return render(request, "path/to/my/template", choices=my_choices)
然后在您的模板中,您可以选择一个包含默认选项和字符串值的框。并且还有一个可选的input type=text
,如果已填充,将保存到该字段。
类似的东西:
<select name="my_field">
<option value="" selected="selected">-----</option>
{% for choice in choices %}
<option value="{{ choice }}">{{ choice }}</option>
{% endfor %}
</select>
会给你默认选择。然后添加一个具有相同名称的输入,这将作为一个可选的新选择。
<input type="text" name="my_field"/>
您可以选择编写javascript逻辑,以确保只提交选择框或文本字段。