Django模型作为optgroup选择

时间:2017-06-19 23:58:22

标签: django django-models

我正在尝试将我安装的模型作为选择组选择。

我必须在我的模型中完成,而不是形式。

到目前为止,我试过了。

def get_installed_model_choices():
    returnval = []
    for app in settings.SYSTEM_INSTALLED_APPS:
        app_config = apps.get_app_config(app)
        app_models = app_config.get_models()
        model_choices = []
        for model in app_models:
            model_choices.append([model._meta.model_name, model._meta.verbose_name])
        returnval.append([app_config.verbose_name, model_choices])
    print returnval
    return returnval

在我的模范领域。

model = custom_model_fields.PanNoneBlankCharField(choices = get_installed_model_choices(),verbose_name=_('model'),
                                                  max_length=20)

我收到此错误。

"Models for app '%s' haven't been imported yet." % self.label)

第二种方法: 这是我在互联网上看到的东西,

def __init__(self, *args, **kwargs):
    super(PanUserModelPermissions, self).__init__(*args, **kwargs)
    self._meta.get_field('model')._choices = \
        lazy(get_installed_model_choices, list)()

这也没有效果,没有影响

我不希望选择是静态的,无论如何要实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

如果您只想从模型中进行选择,可以将content_type用作:

from django.contrib.contenttypes.models import ContentType

content_type = models.ForeignKey(ContentType,
                                 null=True,
                                 blank=True,
                                 verbose_name=u'content_type ')

更多信息here