【问题标题】:how to create a field in django that is only enabled after filling in the previous one?如何在django中创建一个仅在填写前一个后才启用的字段?
【发布时间】:2017-11-28 12:38:56
【问题描述】:

只有当“bond”填写为“outsourced”时,我才想在 django admin 中启用“registration”字段。

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)

【问题讨论】:

  • 您需要使用 Javascript,您无法在服务器端执行此操作。

标签: python django python-3.x django-models


【解决方案1】:

您必须使用 javascript 才能使其正常工作。在这个例子中,我使用了@987654321@。并确保在 ModelAdmin 中添加这个 js 文件

admin.py

class ContatoAdmin(admin.ModelAdmin):

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

我在static > admin > js 文件夹中创建了admin-registration.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)
        }
    })
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 2011-08-12
    • 1970-01-01
    • 2012-11-15
    • 2011-01-26
    相关资源
    最近更新 更多