# example objects:
# free
# paid
class ItemType(models.Model):
name = models.CharField(...)
class Item(forms.ModelForm):
title = models.CharField(...)
item_type = models.ForeignKey(ItemType)
destination_free = models.CharField(...)
destination_paid = models.CharField(...)
如何根据destination_free
值显示destination_paid
和item_type
字段?因此,如果item_type
是免费的,我的表单应显示destination_free
,但如果item_type
已付款,我的表单应显示destination_paid
字段。
答案 0 :(得分:3)
由于我不知道你的整个代码,这只是客户端的基本逻辑。如果需要,您可以更改值:
$('#id_destination_free').hide(); // destination_free field
$('#id_destination_paid').hide(); // destination_paid field
$('#id_item_type').on('change', function(){
var optionSelected = $("option:selected", this);
var valueSelected = this.value;
if (valueSelected == 'something') {
$('#id_destination_paid').hide();
$('#id_destination_free').show();
} else if (valueSelected == 'anotherthing') {
$('#id_destination_free').hide();
$('#id_destination_paid').show();
}
return false;
});
由于您希望item_type
个对象作为表单中的选择框,因此可能是ModelForm
:
class ItemForm(forms.ModelForm):
class Meta:
model = Item
def __init__(self, *args, **kwargs):
super(ItemForm, self).__init__(*args, **kwargs)
self.fields['item_type'] = forms.ModelChoiceField(queryset=ItemType.objects.all())
你可以在html文件中渲染它,如:
{{ form.as_p }}