我在使用Django-CMS的Django项目中构建了一个相当简单的应用程序,研究。 (这是我在项目/应用程序中的第一次尝试。)它的主要目的是存储各种知识资产(即由研究人员撰写的文章,书籍等)。
问题在于,当我将浏览器指向/ research /时,我得到一个错误,表示该表' research_journal'不存在("没有这样的表")。
我正在使用带有sqlite3数据库的Djnago 1.6.5。
查看python manage.py sql research
收益率:
BEGIN;
CREATE TABLE "research_researchbase" (
"id" integer NOT NULL PRIMARY KEY,
"pub_date" datetime NOT NULL,
"authors" varchar(200) NOT NULL,
"year" varchar(25) NOT NULL,
"title" varchar(200) NOT NULL,
"subtitle" varchar(200) NOT NULL,
"image_id" integer NOT NULL REFERENCES "filer_image" ("file_ptr_id"),
"link" varchar(200) NOT NULL
)
;
CREATE TABLE "research_journal" (
"researchbase_ptr_id" integer NOT NULL PRIMARY KEY REFERENCES "research_researchbase" ("id"),
"journal" varchar(200) NOT NULL,
"abstract" text NOT NULL,
"citation" varchar(200) NOT NULL
)
;
CREATE TABLE "research_encyclopedia_chapter" (
"researchbase_ptr_id" integer NOT NULL PRIMARY KEY REFERENCES "research_researchbase" ("id"),
"encyclopedia" varchar(200) NOT NULL,
"publisher" varchar(200) NOT NULL,
"summary" varchar(200) NOT NULL
)
;
CREATE TABLE "research_book" (
"researchbase_ptr_id" integer NOT NULL PRIMARY KEY REFERENCES "research_researchbase" ("id"),
"publisher" varchar(200) NOT NULL,
"summary" varchar(200) NOT NULL
)
;
COMMIT;
我已经python manage.py migrate research
运行并获得:
/Users/XXX/Documents/repos/sfs/env/lib/python2.7/site-packages/app_data/fields.py:2: DeprecationWarning: django.utils.simplejson is deprecated; use json instead.
from django.utils import simplejson as json
Running migrations for research:
- Nothing to migrate.
- Loading initial data for research.
Installed 0 object(s) from 0 fixture(s)
我已经运行python manage.py syncdb
并获得以下内容:
Syncing...
Creating tables ...
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
Synced:
> djangocms_admin_style
> django.contrib.auth
> django.contrib.contenttypes
> django.contrib.sessions
> django.contrib.admin
> django.contrib.sites
> django.contrib.sitemaps
> django.contrib.staticfiles
> django.contrib.messages
> mptt
> south
> sekizai
> django_select2
> hvad
Not synced (use migrations):
- djangocms_text_ckeditor
- cms
- menus
- djangocms_style
- djangocms_column
- djangocms_file
- djangocms_flash
- djangocms_googlemap
- djangocms_inherit
- djangocms_link
- djangocms_picture
- djangocms_teaser
- djangocms_video
- reversion
- polls
- djangocms_polls
- aldryn_blog
- easy_thumbnails
- filer
- taggit
- research
(use ./manage.py migrate to migrate these)
这是models.py:
from django.db import models
from django.utils import timezone
from filer.fields.image import FilerImageField
import datetime
class ResearchBase(models.Model):
pub_date = models.DateTimeField('date published')
authors = models.CharField(max_length=200)
year = models.CharField(max_length=25)
title = models.CharField(max_length=200)
subtitle = models.CharField(max_length=200, blank=True)
image = FilerImageField()
link = models.CharField(max_length=200, blank=True)
def __unicode__(self):
return self.title
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Journal(ResearchBase):
journal = models.CharField(max_length=200)
abstract = models.TextField()
citation = models.CharField(max_length=200)
class Encyclopedia_Chapter(ResearchBase):
encyclopedia = models.CharField(max_length=200)
publisher = models.CharField(max_length=200)
summary = models.CharField(max_length=200)
class Book(ResearchBase):
publisher = models.CharField(max_length=200)
summary = models.CharField(max_length=200)
这里是我的views.py(注意我通过渲染传递了两个对象,忽略了我还没有在整个交易中包含类Book的事实):
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, Http404
from django.template import RequestContext, loader
from research.models import Journal, Encyclopedia_Chapter, Book
def research_index(request):
latest_journal_list = Journal.objects.order_by('-pub_date')[:5]
latest_chapter_list = Encyclopedia_Chapter.objects.order_by('-pub_date')[:5]
context = {
'latest_journal_list': latest_journal_list,
'latest_chapter_list': latest_chapter_list
}
return render(request, 'research/index.html', context)
def journal_detail(request, journal_id):
journal = get_object_or_404(Journal, pk=journal_id)
return render(request, 'research/journal_detail.html', {'journal': journal})
def chapter_detail(request, chapter_id):
chapter = get_object_or_404(Encyclopedia_Chapter, pk=chapter_id)
return render(request, 'research/chapter_detail.html', {'chapter': chapter})
这是应用程序的url.py:
from django.conf.urls import patterns, url
from research import views
urlpatterns = patterns('',
url(r'^$', views.research_index, name='research'),
url(r'^(?P<journal_id>\d+)/$', views.journal_detail, name='journal_detail'),
url(r'^(?P<chapter_id>\d+)/$', views.chapter_detail, name='chapter_detail'),
)
这是index.html模板:
{% extends 'research/base.html' %}
{% block research_content %}
<div class="container">
<div class="row featurette">
<h3 id="research">Peer-reviewed Journal Articles</h3>
{% if latest_journal_list %}
<ul id="research">
{% for journal in latest_journal_list %}
<li id="research">
<img src="{{ journal.image.url }}" id="research">
<h4>{{ journal.journal }}</h4>
<h5>{{ journal.title }}</h5>
<a href="{% url 'research:journal_detail' journal.id %}">Read More</a>
</li>
{% endfor %}
</ul>
{% else %}
<p>No journals are available.</p>
{% endif %}
</div>
<div class="row featurette">
<h3 id="research">Encyclopedia Chapters</h3>
{% if latest_chapter_list %}
<ul id="research">
{% for chapter in latest_chapter_list %}
<li id="research">
<img src="{{ chapter.image.url }}" id="research">
<h4>{{ chapter.journal }}</h4>
<h5>{{ chapter.title }}</h5>
<a href="{% url 'research:chapter_detail' chapter.id %}">Read More</a>
</li>
{% endfor %}
</ul>
{% else %}
<p>No encyclopedia chapters are available.</p>
{% endif %}
</div>
</div>
{% endblock %}
以防万一,这是我的cms_app.py:
from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool
from django.utils.translation import ugettext_lazy as _
class ResearchApp(CMSApp):
name = _("Research App")
urls = ["research.urls"]
app_name = "research"
apphook_pool.register(ResearchApp)
思考?任何帮助将不胜感激。
答案 0 :(得分:96)
This comment为我和其他一些人工作。它应该得到自己的答案:
python manage.py migrate --run-syncdb
答案 1 :(得分:24)
对于django 1.10,您可能必须python manage.py makemigrations appname
。
答案 2 :(得分:14)
我的迁移似乎存在问题。
我跑了./manage.py schemamigration research --auto
,发现很多字段都没有指定默认值。
所以,我运行./manage.py schemamigration research --init
后跟./manage.py migrate research
从那里重新启动服务器就行了!
答案 3 :(得分:2)
我正在使用Django 1.9,SQLite3和DjangoCMS 3.2并且遇到了同样的问题。我通过运行python manage.py makemigrations
解决了这个问题。接下来是一个提示,指出数据库包含非空值类型但没有设置默认值。它给了我两个选项:1)现在选择一个关闭值或2)退出并更改models.py中的默认设置。我选择了第一个选项并给出了默认值1.重复这个四到五次,直到提示说它已完成。然后我跑了python manage.py migrate
。现在它工作得很好。请记住,首先运行python manage.py makemigrations
,创建数据库的修订版本(我的版本为0004),您始终可以恢复到之前的数据库状态。
答案 4 :(得分:2)
可以通过运行迁移来解决此问题。
python manage.py makemigrations
python manage.py migrate
只要您在models.py
中进行更改,就执行上述操作。
答案 5 :(得分:2)
如果您尚未迁移到新创建的表,则会出现此错误,
因此,首先在cmd上将命令写入为python manage.py makemigrations
,然后再编写另一个命令以应用makemigrations命令进行的这些迁移:python manage.py migrate
答案 6 :(得分:1)
如果有人发现有任何建议:
const columns = [
{
title: "name",
dataIndex: "name",
key: "name",
width: "20%"
},
{
title: "status",
dataIndex: "status",
key: "status",
width: "20%",
render: statut => {
if (statut == true) {
return (
<Tag color="#1890ff" key={statut}>
Is True
</Tag>
);
}
return (
<Tag color="#d48806" key={statut}>
Is False
</Tag>
);
}
},
{title: "Method Paiment",
dataIndex: "method",
key: "method",
width: "20%",
}]
python manage.py makemigrations
python manage.py migrate
失败,您可能需要在应用目录中添加一个名为“ python manage.py migrate --run-syncdb
”的文件夹,并创建一个空的migrations
文件。
答案 7 :(得分:1)
对我有用的东西:
python manage.py makemigrations <appname>
python manage.py migrate <yourappname> --fake
删除的表python manage.py makemigrations <appname>
。python manage.py migrate <appname>
答案 8 :(得分:0)
我使用Django CMS 3.4和Django 1.8。 我介绍了Django CMS代码中的根本原因。 根本原因是Django CMS在进行数据库调用之前没有将目录更改为包含SQLite3数据库的文件的目录。错误消息是虚假的。根本问题是SQLite数据库调用是在错误的目录中进行的。
解决方法是确保在更改为工作目录时,所有Django应用程序都将目录更改回Django Project根目录。
答案 9 :(得分:0)
这发生在我身上,对我来说,是因为我将db.sqlite3
添加为未从存储库中进行跟踪。我添加了它并将其推送到服务器,使其正常工作。
执行此操作后,还要运行makemigartions
和migrate
。
答案 10 :(得分:0)
如果您到达列表的底部并找到此答案,我几乎可以肯定它将解决您所有的问题:)
就我而言,我已经删除了一个数据库表,但AndroidManifest
和makemigrations
因此,我获得了有关如何重置this link上所有内容的非常详细的答案
答案 11 :(得分:0)
就我而言,它是通过从 Django-Extensions 运行 reset_db
命令重置数据库(实际上是开发环境)解决的:
python manage.py reset_db
之后我运行了以下命令:
python manage.py makemigrations
python manage.py migrate
答案 12 :(得分:-1)
我进入管理面板时遇到了同样的错误。
您应该改为运行以下命令:python manage.py migrate --run-syncdb
。
我跑了,别忘了包括迁移,
python manage.py make migrations
然后
python manage.py migrate
当错误仍然存在时,我还是使用上面建议的命令进行了尝试。
答案 13 :(得分:-1)
运行以下命令为我解决了此问题 1. python manage.py migration 2. python manage.py makemigrations 3. python manage.py makemigrations appName