我正在尝试按照本教程:https://docs.djangoproject.com/en/dev/intro/tutorial01/
我正在使用Django 1.6.5.看来本教程中使用的版本与我的完全不同.例如,migrate我没有相关的命令manage.py.我通过下载南图书馆而syncdb不是打字来暂时解决这个问题migrate.但现在教程要我输入:
python manage.py makemigration polls
Run Code Online (Sandbox Code Playgroud)
既不是南方也不是原来的Django.我注定了吗?我是否必须安装更新版本的Django?这对我来说似乎很奇怪,因为这样做很麻烦.安装1.6是目前最容易安装的.
我有一个包含多个应用程序和许多数据模型的项目.我正在使用Django 1.7和Python 2.7.
我已将模型组织成app级模块.
- common/
-- models/
--- __init__.py
--- these_models.py
--- those_models.py
Run Code Online (Sandbox Code Playgroud)
我在这个结构中添加了一个新文件,Django的makemigration命令没有检测到更改.
如果我将新模型放在现有的模型文件中,那么迁移文件就会完美地创建,所有东西都会迁移并运行得很好.一旦我将它们放入一个新文件,Django就找不到它们了.它们不在新的应用程序中 - 它是一个现有app/models/模块,只是一个新文件.我没有import *(ewwww)中的__init__.py任何东西.
在Django 1.4中,我不得不使用它Meta,app_label但不要再这样做了.
有什么想法吗?我是否需要手动制作迁移文件(我这样做没有问题)?
我有一个在django 1.6上运行的项目,并努力将其升级到1.8,其中包括从南迁移到django的迁移.
我试着按照django文档中提到的关于如何从南方更新到django迁移的步骤https://docs.djangoproject.com/en/1.8/topics/migrations/#upgrading-from-south
&我在尝试迁移时面临一个问题 - 初始假,似乎即使存在一些表django migration也试图创建它们
./manage.py migrate --fake-initial
Running migrations:
Rendering model states... DONE
Applying retail.0001_initial... FAKED
Applying contenttypes.0001_initial... FAKED
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0001_initial... FAKED
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying account.0001_initial... FAKED
Applying default.0001_initial...Traceback (most recent call last):
File "./manage.py", line 11, in <module>
execute_from_command_line(sys.argv)
File "/project-path/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
utility.execute()
File "/project-path/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/project-path/lib/python2.7/site-packages/django/core/management/base.py", line 393, in run_from_argv …Run Code Online (Sandbox Code Playgroud) 嘿我正在尝试初始化一个新数据库,但我遇到了一些设置迁移的问题.我得到的错误似乎源于设置我的表单.在我正在使用的表单中,我正在创建一个选择字段:
from django import forms
from ..custom_admin import widgets, choices
class MemberForm(forms.Form):
provinces = forms.ChoiceField(label='Provinces', choices=choices.PROVINCE_CHOICES, required=True)
Run Code Online (Sandbox Code Playgroud)
PROVINCE_CHOICES来自这里:
from ..base.models import ProvinceCode
PROVINCE_CHOICES = []
for province in ProvinceCode.objects.filter(country_code_id=1).order_by('code'):
PROVINCE_CHOICES.append((province.code, province.code))
Run Code Online (Sandbox Code Playgroud)
问题似乎是在迁移发生之前调用了这个循环,给出了一个错误,指出省模型不存在.注释掉对该文件的引用允许迁移工作,但这似乎是继续使用的不切实际的解决方案.有没有办法解决这个错误?
作为参考,这是我运行时得到的错误manage.py makemigrations:
./manage.py makemigrations
Traceback (most recent call last):
File "/Users/js/Documents/VirtualEnvironments/pcenv/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
psycopg2.ProgrammingError: relation "pc_psr_code" does not exist
LINE 1: ...escription", "pc_psr_code"."country_code_id" FROM "pc_psr_co...
^
The above exception was the direct cause of the following exception:
Traceback (most recent call …Run Code Online (Sandbox Code Playgroud) 我想摆脱运行迁移时收到的以下消息:
The following content types are stale and need to be deleted:
appname | modelname
Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
Run Code Online (Sandbox Code Playgroud)
在迁移中对删除或不删除的决定进行编码似乎更干净。
在迁移过程中检测和删除过时的ContentType的最干净方法是什么?如果自动创建 ContentType,为什么不自动完成?
我正在重组我的Wagtail应用程序,以删除其中仅包含一个项目的IndexPage,并将该项目移动为当前IndexPage父项的子项。
基本上是从此开始:
Page--|
|--IndexPage--|
|--ChildPages (其中只有1种)
对此:
Page--|
|--ChildPage
我已经对模型进行了更改,以便使用此结构来创建新内容并修复相关视图以直接指向ChildPage。但是现在我想将当前数据迁移到新结构,并且不确定如何处理...理想情况下,这将在迁移中完成,因此我们无需手动进行任何操作。
有没有办法在迁移过程中以编程方式将这些ChildPage移到树上?
我已经为博客应用程序创建了模型.这是我的models.py:
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
# Create your models here.
class post(models.Model):
STATUS_CHOICE=(
('draft','DRAFT'),
('published','Published'),
)
title=models.CharField(max_length=250)
slug=models.SlugField(max_length = 250,unique_for_date='publish')
author=models.ForeignKey(User,related_name='blog_posts')
body=models.TextField()
publish=models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
updated=models.DateTimeField(auto_now=True)
status = models.CharField(max_length=10,
choices = 'STATUS_CHOICES',
default='draft')
class Meta:
ordering = ('-publish',)
def __str__(self):
return self.title
Run Code Online (Sandbox Code Playgroud)
当我尝试迁移模型时,我收到错误:
ERRORS:
myblog.post.status: (fields.E004) 'choices' must be an iterable (e.g., a list or tuple).
Run Code Online (Sandbox Code Playgroud)
这是我的admin.py文件:
from django.contrib import admin
from .models import post
# Register your models here.
admin.site.register(post) …Run Code Online (Sandbox Code Playgroud) 我试图按照此添加新的迁移教程
我增加了新的权限内Meta到permissions现场。然后,我创建了迁移,并尝试修改此迁移以适当地更新组权限。但得到DoesNotExist的RunPython操作。
from django.db import migrations
def assign_new_permission(apps, *args):
Permission = apps.get_model('auth.Permission')
Group = apps.get_model('auth.Group')
# __fake__.DoesNotExist: Permission matching query does not exist.
new_permission = Permission.objects.get(
codename='my_new_permissoin_code')
admins = Group.objects.get(name='Group name')
admins.permissions.add(new_permission)
class Migration(migrations.Migration):
dependencies = [
('my_app', '0066_some_migratoin'),
]
operations = [
migrations.AlterModelOptions(
name='my_model',
options={'permissions': (('my_new_permissoin_code',
'Permission name'),)},
),
migrations.RunPython(assign_new_permission)
]
Run Code Online (Sandbox Code Playgroud) 我的数据迁移文件中有此文件:
def set_target_user(apps, schema_editor):
LogEntry = apps.get_model('auditlog', 'LogEntry')
ContentType = apps.get_model('contenttypes', 'ContentType')
for entry in LogEntry.objects.filter(target_user=None):
ct = ContentType.objects.get(id=entry.content_type.id)
model = ct.model_class()
Run Code Online (Sandbox Code Playgroud)
我提到了AttributeError。但是它在其他模块(不是migratins)中也能很好地工作。任何想法如何克服这个?
我正在学习Django ...并且运行makemigrations命令时出现无法修复的错误。
我弄错了ModuleNotFoundError: No module named 'idmp_core.apps.IdmpCoreConfigdjango'; 'idmp_core.apps' is not a package。令我感到困惑的是,出现django在idmp_core.apps.IdmpCoreConfig字符串末尾的单词
INSTALLED_APPS = [
'idmp_core.apps.IdmpCoreConfig'
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
Run Code Online (Sandbox Code Playgroud)
我的项目树结构如下:
D:.
| manage.py
|
+---idmp_core
| | admin.py
| | apps.py
| | models.py
| | tests.py
| | urls.py
| | views.py
| | __init__.py
| |
| +---migrations
| | __init__.py
|
+---idmp_v0
| | settings.py
| | urls.py
| | wsgi.py
| | __init__.py
|
\---templates …Run Code Online (Sandbox Code Playgroud)