是否可以附加到继承表单的exclude或widgets变量?
到目前为止我有以下设置.
class AddPropertyForm(forms.ModelForm):
num_months = forms.ChoiceField(choices=MONTHS)
request_featured = forms.BooleanField(required=False)
featured_months = forms.ChoiceField(choices=MONTHS)
class Meta():
model = RentalProperty
exclude = ('listing_id', 'active_listing', 'active_listing_expiry_date', 'featured_property', 'featured_expiry_date', 'slug', 'property_manager')
widgets = {
'property_type': forms.Select(attrs={'onchange':'propertyType()'}),
}
class EditPropertyForm(AddPropertyForm):
request_reactivation = forms.BooleanField(required=False)
class Meta(AddPropertyForm.Meta):
exclude = ('address1', 'property_type')
widgets = {
'request_reactivation': forms.CheckboxInput(attrs {'onchange':'reactivateProperty()'}),
}
Run Code Online (Sandbox Code Playgroud)
我试图让EditPropertyForm的最终结果看起来像下面的exclude和widgets语句.
exclude = ('address1', 'property_type', 'listing_id', 'active_listing', 'active_listing_expiry_date', 'featured_property', 'featured_expiry_date', 'slug', 'property_manager')
widgets = {
'request_reactivation': forms.CheckboxInput(attrs {'onchange':'reactivateProperty()'}),
'property_type': forms.Select(attrs={'onchange':'propertyType()'}),
}
Run Code Online (Sandbox Code Playgroud)
如果有更好的方法,请建议.
任何帮助都非常感谢.
我有一个具有内联形式的主窗体.是否可以从内联表单的清理函数访问主表单的cleaning_data?
这就是我要问的原因.
主要表格有一个字段来定义房产是出售还是出租.然后,内联表单显示销售价格字段或租赁金额和存款的字段.我试图验证,如果该物业是出售,那么租赁和存款字段应为空.
我可以在前端界面的视图中执行此操作,但是可以在forms.py中为前端和管理员完成吗?
我想知道是否有任何方法可以在if
语句中调用模板标记.
我正在尝试执行以下操作.
{% for k,v in form.amenities.field.choices %}
{% if {% check_hidden k %} %}
{{ v }}
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
该{% check_hidden k %}
标签返回True
或False
该项目从表中进行查找.我可以证实,{% check_hidden k %}
返回要么True
还是False
在它自己的,但我想知道如果我可以换一个if
围绕它的语句?
我正在使用的应用程序是继承的,因此我尝试最小化现在需要完成的更改量.目前它只是被渲染为{{form.amenities}}
,但我在模型中添加了一个额外的字段,我现在需要在模板中显示字段之前检查.
如果有另一种方法可以做到这一点,我愿意接受建议.
提前致谢.
我仍然是jQuery的新手,所以请原谅我,如果第一轮没有意义.
我有一组复选框(允许,不允许,可协商),如果您选中允许或可协商,它将通过onclick事件取消隐藏另一组复选框.
我遇到的问题是,当刷新页面时,如果选中允许或协商,我希望第二组复选框可见.我希望这可以在页面加载时完成,而不是通过任何点击或更改事件(如果可能).
我已经尝试了其他问题的各种建议,没有运气.例如:if ($("#id_pets_0").attr("checked")==true)
这可能吗?
如果有人对此有任何替代方案,我也会为此而战.
更新: 这是我一直在尝试的.
$(function() {
if ($("#id_pets_0").attr("checked")==true) {
$("#dogs").show();
$("#cats").show();
}
else {
$("#dogs").hide();
$("#cats").hide();
}
});
Run Code Online (Sandbox Code Playgroud)
更新: 此代码确实有效.所以我知道它至少会检查点击事件的复选框.
$(function() {
$('input#id_pets_0').click(function() {
if ($(this).attr("checked")) {
$("#id_pets_1").attr("checked", false);
$("#dogs").show("slow");
$("#cats").show("slow");
return;
}
if ($("#id_pets_2").attr("checked")) {
$("#dogs").show("slow");
$("#cats").show("slow");
}
else {
$("#id_dogs_0").attr("checked", false);
$("#id_dogs_2").attr("checked", false);
$("#id_cats_0").attr("checked", false);
$("#id_cats_2").attr("checked", false);
$("#dogs").hide("slow");
$("#cats").hide("slow");
}
});
});
Run Code Online (Sandbox Code Playgroud)