2016-05-17 7 views
1
# 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

Вы используете поле 'models' в вашем составе? Что именно вы хотите сделать? –

+0

@MHassan Я хочу отобразить в поле шаблона 'destination_free' или' destination_paid' поле в зависимости от выбранного поля 'item_type'. – user4812479812

+0

Если вы в порядке с написанием некоторого 'javascript', вы можете скрыть оба поля формы и показать один из них после того, как пользователь выберет' item_type' с некоторым кодом javascript. Если вы в порядке с этим решением и нуждаетесь в помощи, я могу показать вам пример. – alix

ответ

2

Поскольку я не знаю весь ваш код, это только базовая логика для клиентской стороны. Вы можете изменить значение, если вам нужно:

$('#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 }} 
Смежные вопросы