2017-11-28 3 views
1

"bond"が "outsourced"として記入されている場合にのみ、django adminで "registration"フィールドを有効にしたいと思います。djangoでフィールドを作成する方法は、前のフィールドを入力した後にのみ有効になりますか?

class Contato(models.Model): 

    BOND_CHOICES = (
     ('server', 'Servidor'), 
     ('outsourced', 'Terceirizado'), 
     ('trainee', 'Estagiário'), 
    ) 

    name = models.CharField(verbose_name='Nome', max_length=100) 
    date = models.DateField(verbose_name='Data de Nascimento') 
    email = models.CharField(verbose_name='Email', max_length=100) 
    branchLine = models.DecimalField(verbose_name='Ramal', max_digits=4, decimal_places=0) 
    bond = models.CharField(verbose_name='Vínculo', max_length=10, choices=BOND_CHOICES) 
    registration = models.CharField(verbose_name='Matrícula', max_length=20) 
+0

Javascriptを使用する必要があります。これを達成するためにサーバーサイドで行うことはできません。 – knbk

答えて

0

あなたはこの作品を作るためにJavaScriptを使用する必要があります。この例では、Django admin jQueryを使用しました。そして、私はstatic>admin>jsフォルダにadmin-registration.jsを作成している

class ContatoAdmin(admin.ModelAdmin): 

    class Media: 
     js = ['/static/admin/js/admin-registration.js'] 

admin.py

ModelAdminの

で、これはファイルをJS追加してください。

django.jQuery(document).ready(function(){ 
    django.jQuery('#id_registration').attr('readonly', true) 
    django.jQuery('#id_bond').click(function(event) { 
     if (event.target.options[event.target.selectedIndex].text == 'Terceirizado') { 
      django.jQuery('#id_registration').attr('readonly', false) 
     } 
    }) 
}) 
関連する問題