Django-Hacker:自定义默认Django表单
项目描述
基本用法
使用pip install djhacker安装,然后
import djhacker
djhacker.formfield(
YourModel.your_field,
form_class=YourFormField,
custom_form_field_kwarg='something',
)
这将默认使任何Django ModelForm渲染为YourFormField(custom_form_field_kwarg='something'),加上它想要添加的其他kwargs,您不需要使用任何特定的模型表单,这将在例如admin中本地工作。
自定义表单字段回调
您可以为模型字段类型注册自定义表单字段
@djhacker.register(models.ForeignKey)
def custom_fk_formfield(model_field, **kwargs):
return dict(
form_class=YourFormField,
custom_form_field_kwarg=something,
**kwargs,
)
# you don't need to pass extra arguments anymore for ForeignKey fields:
djhacker.formfield(YourModel.some_fk, queryset=Some.objects.all())
小部件脚本属性
Django在不久的将来不会做的是让您自定义脚本标签。这意味着没有简单的方法来组合Widget.Media.js和任何新的脚本标签属性,包括但不限于
async、defer:用于控制脚本何时加载
type="module":将脚本作为EcmaScript Module (ESM)加载并使用导入
让我们来解决这个问题,首先修补Django的Media render_js
import djhacker
djhacker.media_script_attributes()
然后,让我们自定义一个脚本标签
class YourWidget(forms.Widget):
class Media:
js = [
'your/script.js[type=module][defer=true]',
]
它将以这种方式渲染
<script src="/static/your/script.js" type="module" defer="true"></script>
升级
到v0.2.x
注册的回调现在返回一个简单的字典,其中包含form_class中的表单字段类。
@djhacker.register(models.ForeignKey)
def custom_fk_formfield(model_field, **kwargs):
return YourFormField, {
'custom_form_field_kwarg': 'something',
**kwargs,
)
变为
@djhacker.register(models.ForeignKey)
def custom_fk_formfield(model_field, **kwargs):
return dict(
form_class=YourFormField,
custom_form_field_kwarg=something,
**kwargs,
)
项目详情
关闭
djhacker-0.2.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4644245c23991dfc9e065b22185e1addf171ebe671beb6b2d41750e0a62e0c6f |
|
MD5 | acd2c26ed91e0052a6f8f5830e08ced3 |
|
BLAKE2b-256 | 35fda9a02c3d9e5fb8eeaba773fd5e557914b20d2147bf88a2d9e1ecfff9d320 |