2016-04-30 23 views
2

models.pyDjango管理顯示字段僅當選擇框具有特定值

class FixedIncome(Asset): 
    isin = models.CharField(max_length=6, blank=False) 
    coupon = models.DecimalField(max_digits=7, decimal_places=4, help_text="Percent") 
    payment_frequency = models.ForeignKey(PaymentFrequency) 
    months = models.ManyToManyField(Month, blank = False, verbose_name = "Payment months") 
    duration = models.DecimalField(max_digits=4, decimal_places=2, default='0') 
    maturity_date = models.DateTimeField(default=datetime.now, blank=False) 

    class Meta: 
     verbose_name_plural = "Fixed Income" 

欲Django管理顯示MATURITY_DATE屬性,僅當月(數字1至12,選擇框)被選擇。我讀過一些關於JS,但我不能這樣做:(

+1

看起來高度相關..http://stackoverflow.com/questions/15978719/django-admin-show-field-only-if-checkbox-is-false – alecxe

回答

1

我解決了使用jQuery和我的ModelAdmin添加類媒體

admin.py

class FixedIncomeAdmin(admin.ModelAdmin): 
model = FixedIncome 
can_delete = False 
list_display = ['name', 'country', 'industry', 'isin', 'coupon', 'payment_frequency'] 
list_filter = ['name', 'isin', 'country', 'industry'] 
search_fields = ['name', 'isin', 'country', 'industry'] 

class Media: 
    js = ('/static/admin/js/assets_admin.js',) 

assets_admin。 JS

django.jQuery('#id_payment_frequency').change(function(){ 
if(django.jQuery("#id_payment_frequency option:selected").text() == 0) 
    { 
     django.jQuery(".form-row.field-months").hide(); 
    }else 
    { 
     django.jQuery(".form-row.field-months").show(); 
    } 
}); 

如果 「payment_frequency」(0至12)的選擇框具有0,則個月是隱藏在形式

希望能幫助別人。 :)

相關問題