Джанго вопрос по формам - PullRequest
       4

Джанго вопрос по формам

0 голосов
/ 16 сентября 2011

Здравствуйте, у меня есть приложение django, в котором есть форма, в которую можно добавлять продажи и покупки.Есть изменение, которое я хочу сделать с ним.Если пользователь выбирает покупку вместо продажи, я не хочу, чтобы у него был тип страны (местоположение).На самом деле я не хочу, чтобы они имели какую-либо ценность для покупки.

Таким образом, к лету у всех продавцов должна быть возможность выбрать тип страны, в то время как у всех покупок не должно быть этой опции.Как мне это сделать?

enter image description here

models.py

from  management_sys.vat import models   
TRANSACTION_TYPE_CHOICES = ((1, 'sale'), (2, 'purchase'),)  
COUNTRY_TYPE_CHOICES = ((1, 'UK'), (2, 'EU'),)

class Transaction(models.Model):     
    transaction_type = models.Integerfield(verbose_name = "Type", choices = TRANSACTION_TYPE_CHOICES)     
    country_type = models.Integerfield(verbose_name = "Location", choices = COUNTRY_TYPE_CHOICES)     
    date = models.Datefield()     
    vat_period = models.Datefield()     
    amount = models.DecimalField(max_digits=20, decimal_places=2)     
    vat = models.DecimalField(max_digits=20, decimal_places=2)     
    description models.TextField(MAX_LENGTH = 400)     
    def __unicode__(self):         
        return unicode(self.amount) 

forms.py

from management_sys.vat.models import *
from django import forms

class TransactionForm(forms.ModelForm):
    class Meta:
        model = Transaction

Ответы [ 2 ]

0 голосов
/ 16 сентября 2011

Вы должны использовать javascript для этого. Если вы используете {{form.as_table}}, то с помощью jQuery это будет выглядеть примерно так:

<script type="text/javascript">
    $(function() {
        showOrHideLocation();
        $('#id_transaction_type').change(showOrHideLocation);
    });
    function showOrHideLocation() {
        if ($('#id_transaction_type option:selected[value=1]').length) {
            $('#id_country_type').parents('tr:first').show();
        }
        else {
            $('#id_country_type').parents('tr:first').hide();
        }
    }
</script>

Тогда просто подтвердите свой результат в ваших формах.

0 голосов
/ 16 сентября 2011

Этот вопрос не имеет никакого отношения к джанго. Вы должны сделать это с помощью javascript: скрыть или показать некоторые поля на основе значения

Единственное, что является проверкой формы. Вы должны выполнить это так в вашем случае:

   from django.core.exceptions import ValidationError

   class Transaction(models.Model):
       # your fields

       def clean(self):
           if self.transaction_type == 2 and self.country_type:
               raise ValidationError(u'You must not fill location with "purchase" option.')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...