模型列为模型中的选项

时间:2017-02-26 15:37:09

标签: django django-models

你好,我正在开发小型个人项目以获得乐趣,我需要将所有模型作为模型中某个字段的选择,我创建了一个函数来获取所有模型名称:

def get_models():
    choices = [ct.model_class().__name__ for ct in ContentType.objects.all()]
    return choices

和我的模特:

class Action(models.Model):
    model = models.CharField(max_length=70, null=False, blank=False, choices=lazy(get_models, list)())
    act = models.CharField(max_length=3, null=False, blank=False, choices=ACTIONS_CHOICES)
    description = models.TextField(max_length=400, null=True, blank=True)
    count = models.IntegerField(null=False, blank=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.config

    class Meta:
        unique_together = (('model', 'act'),)

但是当我运行代码时,我遇到了这个错误:

django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

我尝试使用以下方式获得不同的模型:

from django.apps import apps
models = apps.get_models()

但是我又遇到了同样的错误,我所理解的是我在Django加载它们之前试图获得模型,我的问题是:有什么方法可以解决这个问题吗?感谢

1 个答案:

答案 0 :(得分:1)

EDITED

您的字段model应该是ContentType模型的外键,Django会将该字段呈现为一个包含所有模型的选择框

content_type = models.ForeignKey(ContentType)