html - Django:不在列表中的下拉列表值

标签 html django drop-down-menu

我正在尝试使用 Django 向下拉列表中输入一个不在列表中的值。从数据库中读取默认值。
但诀窍在于,用户可以看到该值,但不能对其进行更改。

有没有办法用 Django 做到这一点?
Django 不允许我在下拉列表中显示 models.py 中未定义的内容,因此该对象保持为空。

有什么想法吗?也许一些走动?

谢谢

代码:

aList = (('OK', 'OK'), ('Not', 'Not'))

class sampleModel(models.Model):
  name = models.CharField(max_length=32, blank=True)
  res = models.CharField(max_length=10, blank=True, choices=aList)

来自另一个数据库的条目 OK* 和 Not*。我需要在下拉列表中显示 OK*/Not*,这样用户就不能使用它,但仍然可以更改为正常的 OK/Not。

最佳答案

一个简单的选择是在您的选择中添加一个空选项,例如:

aList = (
    ('', 'OK/Not') 
    ('OK', 'OK'), 
    ('Not', 'Not')
)

并使字段 res 成为必填字段,这样您就不能传递空值,因此如果用户选择了空选项,表单将返回错误,直到他选择了一个有效选项

你应该改变你的领域:

res = models.CharField(max_length=10, blank=True, choices=aList)

对于:

res = models.CharField(max_length=10, choices=aList)

所做的唯一更改是删除 blank=True,因此该字段是必需的。

所有这一切都假设您有一些根据您的模型生成的 Django ModelForm

避免修改模型的其他选项可能是管理 View 中的选择。如果您在 HTML 中选择了 3 个选项:

<select name="mySelect" id="id_mySelect">
  <option value="" selected="selected">Please select value</option>
  <option value="value1">Ok</option>
  <option value="value2">Not</option>
</select>

因此,当您在 View 中收到 POST 时,您可以执行以下操作:

error = False
error_text = ''
# Manually get the value of the select in your view
myselect = request.POST.get('mySelect', None)

# If the value of the select is '' return an error to the template
if not myselect:
   error = True
   error_text = 'You have to select an option'
   return ('yourtemplate.html', {'error':error, 'error_text': error_text}, context_instance=RequestContext(request) )

并且您只需要管理返回到模板的自定义错误

你确实有很多可能性去做你想做的事,但为了帮助我们帮助你,我们需要更多关于你的项目的信息,通常是你现在拥有的代码的某些部分以及你如何管理它.

做你想做的事的选项:

  • 填写必填字段并使用ModelForm
  • 制作自定义表单并自定义字段验证(如@dukeboy 所建议)
  • 选择纯 HTML 并在 View 上管理
  • ...

关于html - Django:不在列表中的下拉列表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30343759/

相关文章:

css - 没有换行的并排、灵活宽度的div?

swift - swift中的简单下拉框

jquery - Rails 动态下拉列表未在编辑表单中预先填充

html - 下拉菜单无法按我想要的方式工作

html - Bootstrap - 全屏标题图像后跟背景图像

php - 使用 jquery/ajax 插入 MYSQL DB 500 内部服务器错误

html - 使用 w3.css 的响应式文本大小

Python-Social-Auth 有时显示 'AuthStateForbidden'

django - 为什么我在 Django 的 Python shell 中遇到编程错误?

Django 下载文件不工作