如何根据第一个字段中的选项动态更改管理界面中显示的字段列表?

时间:2015-07-09 19:37:18

标签: django admin models

我希望管理界面仅在我选择' B'时显示disctrict字段。作为category。如果我选择' W'我希望显示Offer模型的所有字段。是否可以在管理页面中显示选定(已过滤)的字段,具体取决于同一模型中其他字段的选择?在此先感谢您的帮助。

我的模特:

class Category(models.Model):

NAME_CHOICES = (
    ('B', 'BLACK'),
    ('W', 'WHITE'),
)

name = models.CharField(max_length=200, choices=NAME_CHOICES)

class Meta:
    verbose_name_plural = 'Categories'

def __unicode__(self):
    return self.get_name_display()



class Offer(models.Model):

category = models.ForeignKey(Category, verbose_name='Kategoria')
city = models.CharField(max_length=128, verbose_name='Miasto')
province = models.CharField(max_length=3)
district = models.CharField(max_length=128, verbose_name='Dzielnica')

def __unicode__(self):
    return "Offer number %s" % (self.id)

1 个答案:

答案 0 :(得分:1)

首先我要说,django只能以同步的方式工作。因此,如果要选择要使用的输入,则必须发送请求并等待反馈。在我看来,没有正确的方法来正确完成这项任务。

我看到了一些解决方案:

1)你可以使用jQuery。但主要的问题是django有一个自己的管理系统,内置小部件。您可以尝试以两种方式自定义它:

  • 使用此选项获取应用程序(例如,django-admin-tools)并在表单上创建自定义行为;
  • manage.py collectstatic之后转到admin文件夹并创建自定义jQuery脚本。

2)使用ModelChoiceField为您的模型构建自定义管理表单。我不确定这种字段行为对您有帮助,但您可以对此进行调查。

如果我需要执行此任务,我选择使用admin static和custom jQuery的第一种方式。