I have a model in my Django project called Category.
models.py
class Category(models.Model):
parent_category=models.ForeignKey('self', related_name='categories', on_delete=models.CASCADE, null=True, blank=True)
name = models.CharField(max_length=200, db_index=True)
slug = models.SlugField(max_length=200, unique= True)
image = models.ImageField(upload_to='categories/', blank=True)
class Meta:
ordering = ('name',)
verbose_name = 'category'
verbose_name_plural = 'categories'
def __str__(self):
return self.name
Now in admin, I want to show the image field only if the parent field is not empty, on the fly. The parent field is a dropdown. I have a tried this, but it does not work:
admin.py
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
def get_fields(self, request, obj=None):
fields = super(CategoryAdmin, self).get_fields(request, obj)
for field in fields:
if field == 'parent_category' and 'parent_category'== None:
fields.remove('image')
return fields
prepopulated_fields = {'slug' : ('name',)}
I also tried to use jQuery.
admin.py
class Media:
js = (
'js/myscript.js',
)
myscript.js
if (!$) {
$ = django.jQuery;
}
(function($) {
$(document).ready(function() {
if ($('#parent_category').val() != "")
{
$('#image').hide()
}
else {
$('#image').show()
}
})
})(django.jQuery);
It shows the image field regardless of the value of parent_category. Any suggestions?
Thanks