我有一个输入字段,使用如下模板呈现:
<div class="field">
{{ form.city }}
</div>
Run Code Online (Sandbox Code Playgroud)
其呈现为:
<div class="field">
<input id="id_city" type="text" name="city" maxlength="100" />
</div>
Run Code Online (Sandbox Code Playgroud)
现在假设我想autocomplete="off"
为渲染的输入元素添加一个属性,我该怎么做?或onclick="xyz()"
或class="my-special-css-class"
?
我的模型中有一个DateTimeField字段.我想将它显示为Django管理站点中的复选框小部件.为此,我创建了一个自定义表单小部件.但是,我不知道如何仅将此自定义窗口小部件用于此字段.
在Django文档解释了如何使用自定义窗口小部件的所有特定类型的字段:
class StopAdmin(admin.ModelAdmin):
formfield_overrides = {
models.DateTimeField: {'widget': ApproveStopWidget }
}
Run Code Online (Sandbox Code Playgroud)
但这并不够精细.我想只为一个字段更改它.
The documentation is a bit lacking with respect to this feature.
from django import forms
class TwoInputWidget(forms.MultiWidget):
"""An example widget which concatenates two text inputs with a space"""
def __init__(self, attrs=None):
widgets = [forms.TextInput, forms.TextInput]
Run Code Online (Sandbox Code Playgroud)
我可以看到我需要创建一个带有其他小部件列表的"小部件"属性,但之后它会得到一个小福尔摩斯.
有人请向我解释如何使用MultiWidget小部件吗?
给出一组典型的模型:
# Application A
from django.db import models
class TypicalModelA(models.Model):
the_date = models.DateField()
# Application B
from django.db import models
class TypicalModelB(models.Model):
another_date = models.DateField()
...
Run Code Online (Sandbox Code Playgroud)
如何将所有 DateFields 的默认小部件更改为自定义MyDateWidget?
我问,因为我希望我的应用程序有一个jQueryUI datepicker用于输入日期.
我考虑过一个自定义字段,它使用我的自定义小部件扩展django.db.models.DateField.这是实施这种全面改变的最佳方式吗?这样的改变需要专门将一个特殊的MyDateField导入到每个模型中,这是一个劳动密集型,容易出现开发人员错误(即一些模型.DateField将会通过),在我看来似乎是不必要的重复工作.另一方面,我不喜欢修改可以被认为是规范版本的模型.DateField.
感谢思想和投入.
我有一个与另一个对象有多对多关系的对象.
在Django Admin中,这会在多个选择框中生成一个很长的列表.
我想过滤ManyToMany关系,因此我只获取客户选择的City中可用的类别.
这可能吗?我是否必须为它创建一个小部件?如果是这样 - 我如何将行为从标准的ManyToMany字段复制到它,因为我也想要filter_horizontal函数.
这些是我的简化模型:
class City(models.Model):
name = models.CharField(max_length=200)
class Category(models.Model):
name = models.CharField(max_length=200)
available_in = models.ManyToManyField(City)
class Customer(models.Model):
name = models.CharField(max_length=200)
city = models.ForeignKey(City)
categories = models.ManyToManyField(Category)
Run Code Online (Sandbox Code Playgroud) 我有一个类似于布尔值的模型:
class TagCat(models.Model):
by_admin = models.BooleanField(default=True)
Run Code Online (Sandbox Code Playgroud)
这在admin中显示为一个复选框.
TagCat
.这个字段应该对他隐藏.谁能告诉我怎么做?Django文档似乎没有详细说明.
我有一份地址信息表.其中一个字段是地址国家/地区.目前这只是一个文本框.我想要一个下拉列表(ISO 3166国家).我是一个django新手,所以我还没有使用过Django Select小部件.有什么好办法呢?
在某个地方对文件中的选项进行硬编码?把它们放在数据库中?在模板中?
所以我的django书又回到了大学,我正在努力解决这个问题.
我的子类django.forms.widgets.MultiWidget
是这样的:
class DateSelectorWidget(widgets.MultiWidget):
def __init__(self, attrs=None, dt=None, mode=0):
if dt is not None:
self.datepos = dt
else:
self.datepos = date.today()
# bits of python to create days, months, years
# example below, the rest snipped for neatness.
years = [(year, year) for year in year_digits]
_widgets = (
widgets.Select(attrs=attrs, choices=days),
widgets.Select(attrs=attrs, choices=months),
widgets.Select(attrs=attrs, choices=years),
)
super(DateSelectorWidget, self).__init__(_widgets, attrs)
def decompress(self, value):
if value:
return [value.day, value.month, value.year]
return [None, None, None]
def format_output(self, rendered_widgets):
return u''.join(rendered_widgets)
Run Code Online (Sandbox Code Playgroud)
这给了我一个漂亮的日期选择字段,如下所示: …
我的一些Django 1.3模型具有DateField属性.生成表单时,我想使用jQuery UI Datepicker而不是纯文本字段.我知道我可以创建新的小部件,但我不明白如何.另外,我不确定是否已经为Django做了这样的事情(我用Google搜索,没有机会).
如何创建一个Django Widget,我可以在jQuery UI Datepicker的多个模型(和页面)中重用它?
我想覆盖Django(2.01)小部件模板,因为我需要为每个输入,标签添加类,并以不同的方式定位它们
app
- templates
- app
- django
- forms
- widgets
- input.html
Run Code Online (Sandbox Code Playgroud)
app
- templates
- django
- forms
- widgets
- input.html
Run Code Online (Sandbox Code Playgroud)
或模板项目目录:
- templates
- django
- forms
- widgets
- input.html
Run Code Online (Sandbox Code Playgroud)
它们都不起作用(即使我这是在文档中推荐的方式,也是我在stackoverflow上看到的答案),它仍然从默认加载.
作为一般的小部件的模板,我宁愿把他们的模板项目目录,但是从我的芦苇默认情况下,小部件安装的应用程序只搜索.
django ×10
django-widget ×10
django-forms ×5
django-admin ×3
python ×3
jquery ×2
boolean ×1
country ×1
field ×1
html ×1
many-to-many ×1
widget ×1