Python 如何使用filter\u水平显示django admin中多个字段的所有可用选项
我有两个模型,它们有多对多的关系。一个模型包含所有可能的选择,而另一个模型可以有部分或全部这些选择 这是两种型号:Python 如何使用filter\u水平显示django admin中多个字段的所有可用选项,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我有两个模型,它们有多对多的关系。一个模型包含所有可能的选择,而另一个模型可以有部分或全部这些选择 这是两种型号: class LanguageDomains(models.Model): DOMAIN_CHOICES=( ('Choice1', _(u'Choice1')), ('Choice2', _(u'Choice2')), ('Choice3', _(u'Choice3')), ('Choice4', _(u'Choice4')), )
class LanguageDomains(models.Model):
DOMAIN_CHOICES=(
('Choice1', _(u'Choice1')),
('Choice2', _(u'Choice2')),
('Choice3', _(u'Choice3')),
('Choice4', _(u'Choice4')),
)
# There is many more choices in the actual code
domains = models.CharField(max_length=255, choices=DOMAIN_CHOICES, default=None)
def __unicode__(self):
return self.domains
class Revitalization(models.Model):
code = models.ForeignKey(Codes, related_name ='revitalization')
program_name = models.CharField(max_length=255, null=True, blank=True)
year_founded = models.CharField(max_length=4, null=True, blank=True)
some_domains = models.ManyToManyField(LanguageDomains, related_name='revitalization')
def __unicode__(self):
return self.code.primary_name
我的管理员py:
class RevitalizationAdmin(admin.ModelAdmin):
list_display = ('code','id')
filter_horizontal = ('language_domains',)
这就是管理控制台的外观:
问题是,有没有办法用LanguageDomains模型中的所有域选项填充“Available language domains”(可用语言域)列表?您可以编写一个程序,用所有可用选项填充LanguageDomains模型表
根据您的用例,如果LanguageDomains的唯一目的是显示多个选项,并且不会在运行时对其进行编辑,请查看使用情况。我将研究数据迁移,但目前看来,保持现有的方式,手动创建LanguageDomains表,并使表字段唯一似乎更有意义。django multiselectfield的问题是它将数据保存到CharField,CharField限制在255个字符,并且我的选择中的字符数超过了这个限制。