繁体   English   中英

Django rest-api - 属性错误:'str' object 没有属性 '_meta'

[英]Django rest-api - attributeerror: 'str' object has no attribute '_meta'

在我的 Django rest-api 中运行 manage.py migrate 时出现以下错误。 我无法确定在哪里看。 帮助表示赞赏。

属性错误:“str”object 没有属性“_meta”

回溯显示以下内容:

'' Traceback(最近一次调用最后):文件“/home/myproject/myproject-api/manage.py”,第 25 行,在 execute_from_command_line(sys.argv)

文件“ /home/myEnv/lib/python3.9/site-packages/django/core/management/init .py”,第 419 行,在 execute_from_command_line utility.execute()

文件“ /home/myEnv/lib/python3.9/site-packages/django/core/management/init .py”,第 395 行,在执行 django.setup()

文件“ /home/myEnv/lib/python3.9/site-packages/django/init .py”,第 24 行,在 setup apps.populate(settings.INSTALLED_APPS)

文件“/home/myEnv/lib/python3.9/site-packages/django/apps/registry.py”,第 122 行,在填充 app_config.ready()

文件“ /home/myEnv/lib/python3.9/site-packages/cacheops/init .py”,第 18 行,准备好 install_cacheops()

包装器中的文件“/home/myEnv/lib/python3.9/site-packages/funcy/flow.py”,第 231 行,返回 func(*args, **kwargs)

文件“/home/myEnv/lib/python3.9/site-packages/cacheops/query.py”,第 578 行,在 install_cacheops opts = rel.through._meta AttributeError: 'str' object has no attribute '_meta'

''

问题是这样的。 我不得不安装

pip 安装 django-cacheops==0.9.3

这对遇到上述确切错误的任何人都有帮助。

您从 cacheops 获得的错误似乎与您使用与through model 的多对多关系这一事实有关,您可以through传递带有类名称的字符串而不是 ZA2F35E630DAF44ABC2CBBDC212ED4F8EBC2CBBDC212ED4F8EBC26BBDC212ED4F8EBC22 ,因为 class 仅在下面定义。 尽管这是非常普遍的做法,但 cacheops 似乎要求您以不同的方式进行操作:

即,尝试through传递 class 而不是带有类名的字符串来引用您的 model。 为此,您需要稍微重新排序您的代码,首先将您through model 的 class 定义放入其中,这当然需要您将字符串而不是类传递给ForeignKey那里。 例如这样做:

class PostCategory(models.Model):
    post = models.ForeignKey('Post')
    category = models.ForeignKey('Category')

class Post(models.Model):
    pass

class Category(models.Model):
    posts = models.ManyToManyField(Post, through=PostCategory, related_name='categories')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM