我指的是以下基于Django 2.0和cookiecutter-django的GitHub存储库:github.com/Apfelschuss/apfelschuss/tree/c8851430201daeb7d1d81c5a6b3c8a639ea27b02
尝试运行应用程序时出现以下错误:
RuntimeError:模型类投票。models.Author没有声明 明确的app_label,并且不在INSTALLED_APPS的应用程序中。
this line of code出现错误。
我尝试按照https://stackoverflow.com/a/40206661/5894988中所述进行操作,但未成功:
config / settings / base.py
LOCAL_APPS = [
"apfelschuss.votes.apps.VotesConfig"
]
apfelschuss / votes / apps.py
from django.apps import AppConfig
class VotesConfig(AppConfig):
name = "apfelschuss.votes"
verbose_name = "Votes"
知道我在做什么错吗?
如果有人对如何运行存储库的docker容器感兴趣。描述为here。
答案 0 :(得分:1)
我在VS Code上使用Python 3.7.5。同样的问题使我感到困惑。 我进入最初创建的项目并找到settings.py
转到该部分
class FeaturedProduct(models.Model):
db_identification = models.CharField(max_length=120)
featured = models.ForeignKey(Product, on_delete=models.CASCADE)
photograph = models.FileField(blank=True)
timestamp = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.db_identification
def save(self, *args, **kwargs):
self.photograph = self.featured.image
super(FeaturedProduct, self).save(*args, **kwargs)
并添加了
INSTALLED_APPS = []
,-确保大小写正确
这是指导致问题的应用中apps.py中的类
答案 1 :(得分:0)
当显示“模型类xxx未声明显式app_label”时,您的模型可以指定Meta
来定义其2
。您还可以自定义数据库表名称以及其他一些选项作为元数据的一部分。
您需要在所有模型上执行类似的操作;
app_label
修改
我已经检查了您的存储库,我认为您将class Author(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_picture = models.ImageField()
class Meta:
app_label = 'apfelschuss.votes'
def __str__(self):
return self.user.username
和users
应用程序放在votes
下使项目变得过于复杂。
我把它们拉到了项目的根本,一切运行顺利; https://github.com/marksweb/apfelschuss/tree/so/questions/55553252
这是django / python项目中一种更典型的项目结构方法。
答案 2 :(得分:0)
在视图中使用绝对导入解决了我的问题。我将 .models 更改为 apfelschuss.votes.models 。
导致运行时错误的代码:
from django.shortcuts import render
from .models import Voting
问题通过绝对导入解决:
from django.shortcuts import render
from apfelschuss.votes.models import Voting
请参阅在GitHub here上的提交。
答案 3 :(得分:0)
您不小心在settings.py的“中间件”部分下添加了应用名称。
spent some good time debugging, thought this might help save someone else's time.
答案 4 :(得分:0)
我遇到了同样的错误,并通过向项目根目录中的主模块添加丢失的 __init__.py
文件(只是一个空白文件)来修复它。
~/my_project
foo/
models.py
tests.py
__init__.py # <-- Added an empty __init__.py here