如何根据第一个字段中的选择动态更改管理界面中显示的字段列表?
How can I dynamically change list of fields displayed in admin interface depending on the choice in the first field?
我希望管理界面仅在我选择 'B' 作为 category
时显示 disctrict
字段。如果我选择 '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)
首先我必须告诉大家,django 只能以同步方式工作。所以如果你想选择使用哪个输入,你必须发送请求并等待反馈。在我看来,没有直接的方法可以正确地完成这项任务。
我看到了一些解决方案:
1) 您可以使用 jQuery。但主要问题是 django 有一个带有内置小部件的自己的管理系统。您可以尝试通过两种方式自定义它:
- 采用具有此选项的应用程序(例如,django-admin-tools)并在您的表单上创建自定义行为;
manage.py collectstatic
然后转到管理文件夹并创建自定义 jQuery 脚本。
2) 使用 ModelChoiceField 为您的模型构建自定义管理表单。我不确定这个字段行为是否真的对你有帮助,但你可以调查一下。
如果我需要执行此任务,我会选择第一种方式,使用静态管理和自定义 jQuery。
我希望管理界面仅在我选择 'B' 作为 category
时显示 disctrict
字段。如果我选择 '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)
首先我必须告诉大家,django 只能以同步方式工作。所以如果你想选择使用哪个输入,你必须发送请求并等待反馈。在我看来,没有直接的方法可以正确地完成这项任务。
我看到了一些解决方案:
1) 您可以使用 jQuery。但主要问题是 django 有一个带有内置小部件的自己的管理系统。您可以尝试通过两种方式自定义它:
- 采用具有此选项的应用程序(例如,django-admin-tools)并在您的表单上创建自定义行为;
manage.py collectstatic
然后转到管理文件夹并创建自定义 jQuery 脚本。
2) 使用 ModelChoiceField 为您的模型构建自定义管理表单。我不确定这个字段行为是否真的对你有帮助,但你可以调查一下。
如果我需要执行此任务,我会选择第一种方式,使用静态管理和自定义 jQuery。