gpt4 book ai didi

django init 函数在 Form 中带有 attrs

转载 作者:行者123 更新时间:2023-12-04 03:19:44 25 4
gpt4 key购买 nike

我正在使用 Django 配置文件,我需要对配置文件表单进行一些更改。

在正常情况下,我的表单完全没问题,但现在我想要更换垃圾,添加 jquery 以重新填充选择的表单。

问题是 Django Profile 从模型中生成表单,所以我想在选择表单中添加一个属性 id(我已经做了),但是选择不显示选项(值),我不理解为什么,select 表单带来了另一个具有 FK 的模型的值(value)。

谢谢大家:),对不起我的英语

我的自定义部分是:

def __init__(self, *args, **kwargs):
super(_ProfileForm, self).__init__(*args, **kwargs)
self.fields['birth_date'].widget = widget=SelectDateWidget(years=range(datetime.date.today().year,1900,-1))
self.fields['sector'].widget= forms.Select(attrs={'onchange':'get_vehicle_color();'})

django-profiles/profiles/utils.py

#....
def get_profile_form():
"""
Return a form class (a subclass of the default ``ModelForm``)
suitable for creating/editing instances of the site-specific user
profile model, as defined by the ``AUTH_PROFILE_MODULE``
setting. If that setting is missing, raise
``django.contrib.auth.models.SiteProfileNotAvailable``.

"""
profile_mod = get_profile_model()


class _ProfileForm(forms.ModelForm):
class Meta:
model = profile_mod
exclude = ('user',) # User will be filled in by the view.
def __init__(self, *args, **kwargs):
super(_ProfileForm, self).__init__(*args, **kwargs)
self.fields['birth_date'].widget = widget=SelectDateWidget(years=range(datetime.date.today().year,1900,-1))
self.fields['sector'].widget= forms.Select(attrs={'onchange':'get_sector_code();'})
return _ProfileForm

最佳答案

你真正应该做的是通过 Javascript 来处理你的 jquery,而不是通过 python!

Javascript

所以导入一个类似这样的js文件:

$(function(){
$('#id_sector').onchange(function(){
get_vehicle_color();
})
})

Django 表单 html 属性

对于那些真正需要给表单字段设置属性的人,你可以这样做:

def __init__(self, *args, **kwargs):
super(_ProfileForm, self).__init__(*args, **kwargs)
self.fields['sector'].widget.attrs = {'my_attribute_key':'my_attribute_value'}

这种方式更简洁,因为您不会覆盖小部件并在修改模型或 Form 类属性时分心。

关于django init 函数在 Form 中带有 attrs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1442681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com