你好,我正在开发小型个人项目以获得乐趣,我需要将所有模型作为模型中某个字段的选择,我创建了一个函数来获取所有模型名称:
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加载它们之前试图获得模型,我的问题是:有什么方法可以解决这个问题吗?感谢
答案 0 :(得分:1)
EDITED
您的字段model
应该是ContentType
模型的外键,Django会将该字段呈现为一个包含所有模型的选择框
content_type = models.ForeignKey(ContentType)