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个字符,并且我的选择中的字符数超过了这个限制。