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 |