- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在处理一个大型 Django 项目(版本 1.10.7),并且在子应用程序中遇到模型字段错误。基本结构如下所示:
project/
app_one/
__init__.py
apps.py
models.py
urls.py
views.py
app_two/
__init__.py
apps.py
models.py
urls.py
views.py
有问题的模型和字段如下所示(project/app_one/app_two/models.py
):
class SampleModel(model.Model):
parent = models.ForeignKey('self', null=True, blank=True, related_name='members')
当我在根文件夹中运行 python manage.py makemigrations app_one.app_two
时,我收到此错误消息:
File .../django/db/models/utils.py", line 23, in make_model_tuple "must be of the form 'app_label.ModelName'." % model ValueError: Invalid model reference 'app_one.app_two.SampleModel'. String model references must be of the form 'app_label.ModelName'.
这是来自其他相关文件的代码:
project/settings.py:
INSTALLED_APPS = filter(None, (
...
'app_one',
'app_one.app_two',
...
)
项目/app_one/app_two/apps.py:
from __future__ import unicode_literals
from django.apps import AppConfig
class AppOneAppTwoConfig(AppConfig):
name = 'app_one.app_two'
label = 'app_one.app_two'
项目/app_one/app_two/__init__.py:
default_app_config = 'app_one.app_two.apps.AppOneAppTwoConfig'
我认为这里的错误是 Django 只在完整模型名称 (app_one.app_two.SampleModel
) 中寻找一个 .
来将应用标签与django/db/models/utils.py
中的模型名称,由于在本例中有两个,因此失败。
我的问题是:对于 Django 来说,不考虑这似乎很奇怪......是否仍然保留应用标签的点符号并且仍然有一个自引用的 ForeignKey子应用程序?
最佳答案
正如您所说,it seems to be a lookup error当项目由于嵌套应用程序而试图找到您的应用程序时。这可以通过使用 app_label 指定应用程序名称来解决。在模型内部元类中:
class SampleModel(models.Model):
...
class Meta:
app_label = 'app_two'
关于python - 子应用程序中 'self' 的外键在 Django 项目中的 makemigrations 上抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52463761/
我正在使用 Django 1.9.6。我最近删除了我的迁移并运行了 migrate --run-syncdb和 makemigrations my_app .今天,我为我的一个模型添加了一个新字段:
我正在使用 Django 1.8.4。由于我的项目仍在 build 中,我经常删除所有迁移脚本,然后重新运行 makemigrations生成初始迁移脚本。 我找到了 makemigrations将为
除了向模型添加/删除/修改字段之外,当我向模型添加或修改方法时,Django 还会检测到更改。 所以我的问题是每次在模型中更改或添加新方法时都应该运行 makemigrations 吗? 最佳答案 当
我已将 Django 项目设置为使用两个数据库。一个是只读的,另一个是项目其余部分的“默认”django 数据库。 以下是设置: DATABASES = { 'default': {
我只是按照这个程序: makemigrations (成功) migrate (成功) 复制另一台服务器上的应用程序(带有迁移文件) 在该服务器上创建一个新的空数据库 migrate (成功,它创建了
我想知道我们如何在 django 中处理数据库迁移,而生产中的站点在开发时我们停止服务器然后在数据库中进行更改然后重新运行服务器我认为这可能是一个愚蠢的问题但我自己学习并且不能提前弄清楚谢谢。 最佳答
我想在我的模型中向现有字段添加一些 db_index。我刚刚添加了 db_index=True到模型。 我在想我需要运行 python manage.py migrate将它们应用到数据库中。我的问题
我正在使用django,现在我将python文件从custom_fields重命名为fields并更改模型类和模型类正在使用来自 fields 文件的字段,但是当我运行 python manage.p
我的 makemigrations 命令有问题。 注意:到目前为止,我已经成功地进行了迁移,所以这不是我第一次尝试对该项目进行迁移。 我在 INSTALLED_APPS 中有我的项目。 问题:由于某种
Django 1.11。我最近将以下模块添加到 myapp.models: from django.db import models from ordered_model.models import
我正在尝试一个简单的模型继承: class Product(models.Model): creation_date = models.DateTimeField(auto_now_add=T
由于 windows10 初始化,我的所有 SQL 模式都被删除了。所以,我想用已经存在的 django 项目代码(有这么多行......)运行 makemigrations。但是“python ma
使用 Django 1.7,每当我执行 makemigrations 时,我都会对其中一个模型进行更改: (venv) >> python manage.py makemigrations myapp
我有一个 python2.7 django 项目(我知道,我在 20 世纪!),其中有一些模型。我需要重写 makemigrations,以便迁移文件名的格式为 0001.py、0002.py 等,而
我有一个 python2.7 django 项目(我知道,我在 20 世纪!),其中有一些模型。我需要重写 makemigrations,以便迁移文件名的格式为 0001.py、0002.py 等,而
我使用的如下,我定义了一个自定义 JSONField 类型并向其添加了一个自定义验证器类。 models.py json_ctn = JsonField(verbose_name=_('Json'),
我想迁移game.characters INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'd
我的问题是:调用manage makemigrations实际上做了什么? 我知道它会创建迁移文件,但是如何创建呢?它如何跟踪自上次迁移以来发生的变化?它是否直接将模型的当前状态与数据库进行比较?它是
我有一个用 Django 1.10.7 和 mysql 14.14 Distrib 5.5.54 构建的 django 项目 如果我这样做: $ python manage.py makemigrat
我错误地删除了路径 projectName/appName/migrations 下的所有 .py 文件,它包括: 0001_initial.py 0011_auto_20150918_0723.py
我是一名优秀的程序员,十分优秀!