- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这只是让我感到困扰的好奇心。我创建了一个 Form 类来处理从数据库中选择的文档。自然,必须从数据库中获取文档列表以填充可用选项。我通过手动构建选择和使用 ChoiceField 获得“陈旧”行为。但是在使用 ModelChoiceField 选项“queryset”时我得到了准确的结果。
“陈旧”我的意思是,如果我上传一个新文档并呈现页面,则列表仅显示旧文档集(有时即使在刷新页面后仍然存在,根据 View 逻辑应该重新生成表单——证明这是无论用例如何,第二种方法都能按预期工作的事实)。
示例如下:
陈旧版本:
class GetDocumentForm(forms.Form):
document_query = Document.objects.all().order_by('docfile')
document_choices = []
for document in document_query:
document_choices.append((document.id, document.docfile.name))
document = forms.ChoiceField(label='', choices=document_choices)
class GetDocumentForm(forms.Form):
document = forms.ModelChoiceField(queryset=Document.objects.all())
最佳答案
the stale version class body should be inside
__init__
method! – mariodev
class GetDocumentForm(forms.Form):
def __init__(self):
...
self.base_fields['document'].choices = self.document_choices[:]
In [1]: from WebSite.forms import *
In [2]: doc_form = GetDocumentForm()
In [3]: print doc_form.as_p()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
AttributeError: 'GetDocumentForm' object has no attribute '_errors'
class GetDocumentForm(forms.Form):
document = forms.ChoiceField()
def __init__(self, *args, **kwargs):
super(GetDocumentForm, self).__init__(*args, **kwargs)
for doc in Document.objects.all().order_by('docfile'):
self.fields['document'].choices.append((doc.id, doc.docfile.name))
ModelChoiceField(queryset=Document.objects.all())
更简洁。但关键是要了解如何让它以两种方式工作。
关于Django 陈旧模型对象和表单 ChoiceField 与 ModelChoiceField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18648909/
这个问题已经被问过很多次了。我浏览了很多,但仍然找不到我要找的东西。 我正在尝试仅在 Django-Admin 中加载父 ModelChoiceField 选择上的子 ModelChoiceField
我有一个必须手动呈现的模型表单,但 ModelChoiceField 属性没有任何效果。 class ExtendedUserForm(forms.ModelForm): favourite_
我有一个下拉框,该框由模型“选项”中过滤后的对象列表填充。目前,下拉列表显示每个选项的名称。我怎样才能让它显示同一张表中的另一个属性? self.fields['name'] = forms.Mode
我想允许用户删除与特定模型相关联的外键列表。 假设我们有这两个模型: class IceBox(models.Model): ... class FoodItem(models.Model):
我有一个带有 ModelChoiceField 的表单,我想从我的数据库中加载一个表。如果我在表单的 init 上使用这个查询集,那么我的 View 的 form.is_valid 工作正常: sel
我想在 Django 表单中显示一个下拉列表,其中下拉项目是在另一个应用程序的另一个模型中指定的。这就是我的意思: 标题/models.py TITLE_CHOICES = ( ('MR',
我想摆脱Django在ModelForm中添加代表外键的select输入的“-------------”选择 可以使用empty_label=none选项是been answered,但我具有Mode
我正在使用具有以下内容的表单: class InvoiceModelForm ( forms.ModelForm ): u = forms.ModelChoiceField ( queryse
所以我正在开发一个有模型事件的 django 应用程序。每个事件都有一些属性,比如说其中一个是“主机名”(我将在整个过程中使用它作为示例)。我需要实现搜索功能,用户可以搜索所有具有 hostname
使用 Django 1.7,我有一个 ModelChoiceField,它在基础数据更新时不会更新。要显示新数据行,我需要重新启动网络服务器。 Django 表单、字段、 View : class J
如何手动更改模型中选择字段的顺序? 例如: 这段代码: ModelChoiceField(queryset=SomeModel.objects.order_by('SomeField')) 给我: '
您好,有以下表单字段。 forms.py self.fields['sender_name'] = forms.ModelChoiceField(queryset=this_originator_na
我的 django 表单集中有验证错误。从数据库填充的两个下拉列表没有通过验证,我不明白我的错误是什么。 型号 : class Country(models.Model): country_c
首先是代码: class CommentForm(forms.ModelForm): categories = forms.ModelChoiceField(queryset = Catego
我正在使用这样的东西: field1 = forms.ModelChoiceField(queryset=...) 如何让我的表单显示所选的值? 最佳答案 如果你想设置默认的初始值你应该定义initi
我是第一次使用django框架。我想从我的模型类(class)中获取数据以在表单的选择字段中显示它。但是当我对单一形式的两个不同字段使用相同的模型时,它显示错误 'ModelChoiceField'
当我编译我的代码时,返回了这条错误消息: 'ModelChoiceField' object has no attribute 'to_field_name' ModelChoiceFiled 在“学
我看到了 forms.ChoiceField 正在使用 this code验证值: def validate(self, value): """ Validates that the
我如何从 ModelChoiceField 中删除默认的 --------- 选择? 最佳答案 使用 empty_label=Nonefield2 = forms.ModelChoiceField(q
我有一个模型 class Article(models.Model): . . language = models.ForeignKey(Language, help_text
我是一名优秀的程序员,十分优秀!