Python syncdb之前的django引用模型
我有一个actions.py文件,它为我的一个模型的管理页面定义了自定义操作。它使用一个中间页面(如默认的删除操作),因此有一个相应的表单,该表单也在同一文件中声明 出于某种原因,我曾访问过数据库(开发),现在当我尝试运行syncdb时,它给了我以下错误:Python syncdb之前的django引用模型,python,database,django,models,django-syncdb,Python,Database,Django,Models,Django Syncdb,我有一个actions.py文件,它为我的一个模型的管理页面定义了自定义操作。它使用一个中间页面(如默认的删除操作),因此有一个相应的表单,该表单也在同一文件中声明 出于某种原因,我曾访问过数据库(开发),现在当我尝试运行syncdb时,它给了我以下错误: Traceback (most recent call last): File "/home/vinayak/pyCharm/helpers/pycharm/django_manage.py", line 23, in <modul
Traceback (most recent call last):
File "/home/vinayak/pyCharm/helpers/pycharm/django_manage.py", line 23, in <module>
run_module(manage_file, None, '__main__', True)
File "/usr/lib/python2.7/runpy.py", line 176, in run_module
fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 82, in _run_module_code
mod_name, mod_fname, mod_loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/vinayak/zenatix/customuser/manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 242, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 284, in execute
self.validate()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 310, in validate
num_errors = get_validation_errors(s, app)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/validation.py", line 34, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 196, in get_app_errors
self._populate()
File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 75, in _populate
self.load_app(app_name, True)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 99, in load_app
models = import_module('%s.models' % app_name)
File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 40, in import_module
__import__(name)
File "/usr/local/lib/python2.7/dist-packages/debug_toolbar/models.py", line 63, in <module>
patch_root_urlconf()
File "/usr/local/lib/python2.7/dist-packages/debug_toolbar/models.py", line 51, in patch_root_urlconf
reverse('djdt:render_panel')
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py", line 480, in reverse
app_list = resolver.app_dict[ns]
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py", line 310, in app_dict
self._populate()
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py", line 262, in _populate
for pattern in reversed(self.url_patterns):
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py", line 346, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py", line 341, in urlconf_module
self._urlconf_module = import_module(self.urlconf_name)
File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 40, in import_module
__import__(name)
File "/home/vinayak/zenatix/customuser/customuser/urls.py", line 6, in <module>
admin.autodiscover()
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/__init__.py", line 29, in autodiscover
import_module('%s.admin' % app)
File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 40, in import_module
__import__(name)
File "/home/vinayak/zenatix/customuser/iiitd/admin.py", line 3, in <module>
from actions import grant_read_permission
File "/home/vinayak/zenatix/customuser/iiitd/actions.py", line 13, in <module>
class SelectUserForm(forms.Form):
File "/home/vinayak/zenatix/customuser/iiitd/actions.py", line 16, in SelectUserForm
clientObj = ClientInfo.objects.all()[:1].get()
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 301, in get
num = len(clone)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 77, in __len__
self._fetch_all()
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 854, in _fetch_all
self._result_cache = list(self.iterator())
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 220, in iterator
for row in compiler.results_iter():
File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 710, in results_iter
for rows in self.execute_sql(MULTI):
File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 781, in execute_sql
cursor.execute(sql, params)
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py", line 69, in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py", line 53, in execute
return self.cursor.execute(sql, params)
File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 99, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py", line 53, in execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "iiitd_clientinfo" does not exist
LINE 1: ...ientinfo"."id", "iiitd_clientinfo"."corp_id" FROM "iiitd_cli...
除ClientInfo.DoesNotExist外:
clientObj = None
编辑:
actions.py的相关部分:
from django import forms, template
from django.contrib import admin
from django.contrib.admin import helpers
from django.shortcuts import render_to_response
from django.utils.encoding import force_unicode
from guardian.shortcuts import assign_perm
from django.utils.translation import ugettext as _
from models import ClientInfo
from customauth.models import ZenatixUser
class SelectUserForm(forms.Form):
_selected_action = forms.CharField(widget=forms.MultipleHiddenInput)
try:
clientObj = ClientInfo.objects.all()[:1].get()
except ClientInfo.DoesNotExist:
clientObj = None
if clientObj:
client = clientObj.corp
client_name = client.shortName
client_id = client.cID
userList = ZenatixUser.objects.filter(corp__cID=client_id)
user = forms.ModelMultipleChoiceField(userList, label=client_name + ' users ')
def grant_read_permission(modeladmin, request, queryset):
修复
class SelectUserForm(forms.Form):
_selected_action = forms.CharField(widget=forms.MultipleHiddenInput)
def __init__(self, initial, *args, **kwargs):
super(SelectUserForm, self).__init__(*args, **kwargs)
try:
clientObj = ClientInfo.objects.all()[:1].get()
client = clientObj.corp
client_name = client.shortName
client_id = client.cID
userList = ZenatixUser.objects.filter(corp__cID=client_id)
#user = forms.ModelMultipleChoiceField(userList, label=client_name + ' users ')
self.fields['user'] = forms.ModelMultipleChoiceField(userList, label=client_name + ' users ')
self._selected_action = forms.CharField(widget=forms.MultipleHiddenInput)
except ClientInfo.DoesNotExist:
raise Exception('Please add a client info object to the client')
在您发布
actions.py
模块的源代码之前,这基本上是一个猜测,但从回溯来看,我假设第16行位于SelectUserForm
类主体的顶层。如果是这样,则每次导入模块时都会执行此语句,这是一件坏事,原因很多。你刚刚发现了其中一个原因,恭喜你。另一个问题是,每个进程只执行一次,每个进程只执行一次,这会导致在生产过程中出现奇怪的错误(过时状态、从一个进程到另一个进程的不一致状态等)
这里的解决方法是将此语句移动到表单的方法中 在发布
actions.py
模块的源代码之前,这基本上是一个猜测,但从回溯来看,我假设第16行位于SelectUserForm
类主体的顶层。如果是这样,则每次导入模块时都会执行此语句,这是一件坏事,原因很多。你刚刚发现了其中一个原因,恭喜你。另一个问题是,每个进程只执行一次,每个进程只执行一次,这会导致在生产过程中出现奇怪的错误(过时状态、从一个进程到另一个进程的不一致状态等)
这里的解决方法是将此语句移动到表单的方法中 在发布
actions.py
模块的源代码之前,这基本上是一个猜测,但从回溯来看,我假设第16行位于SelectUserForm
类主体的顶层。如果是这样,则每次导入模块时都会执行此语句,这是一件坏事,原因很多。你刚刚发现了其中一个原因,恭喜你。另一个问题是,每个进程只执行一次,每个进程只执行一次,这会导致在生产过程中出现奇怪的错误(过时状态、从一个进程到另一个进程的不一致状态等)
这里的解决方法是将此语句移动到表单的方法中 在发布
actions.py
模块的源代码之前,这基本上是一个猜测,但从回溯来看,我假设第16行位于SelectUserForm
类主体的顶层。如果是这样,则每次导入模块时都会执行此语句,这是一件坏事,原因很多。你刚刚发现了其中一个原因,恭喜你。另一个问题是,每个进程只执行一次,每个进程只执行一次,这会导致在生产过程中出现奇怪的错误(过时状态、从一个进程到另一个进程的不一致状态等)
这里的解决方法是将此语句移动到表单的方法中 请显示操作的来源。py已更新问题。请显示操作的来源。py已更新问题。请显示操作的来源。py已更新问题。请显示操作的来源。py已更新问题。是,正如我所说:在表单的类顶级有一些代码,它们应该在
\uuuu init\uuuu
方法中。所以每个类都可以有一个init?我是否将clientObj=ClientInfo.objects.all()[:1].get()放在其中?找到了解决方案。更新了答案。这是正确的方法吗?考虑到你的“每个类都可以有一个\uuuuuu init\uuuuuuu
”问题,我能得到的唯一有用的答案是“学习Python,伙计”。我知道\uuuuuuu init\uuuuuuu
类似于面向对象语言中的构造函数。但是关于这个特定的用例,它的行为不像一个。我的“表单”未验证,因为传递给它的选定选项未在POST请求中返回。在我引入\uuuu init\uuuu
之前,它工作得很好。我用新的代码更新了这个问题。是的,正如我所说的:在表单的类顶级有一些代码,它们应该在\uuuuuu init\uuuuuu
方法中。所以每个类都可以有一个init?我是否将clientObj=ClientInfo.objects.all()[:1].get()放在其中?找到了解决方案。更新了答案。这是正确的方法吗?考虑到你的“每个类都可以有一个\uuuuuu init\uuuuuuu
”问题,我能得到的唯一有用的答案是“学习Python,伙计”。我知道\uuuuuuu init\uuuuuuu
类似于面向对象语言中的构造函数。但是关于这个特定的用例,它的行为不像一个。我的“表单”未验证,因为传递给它的选定选项未在POST请求中返回。在我引入\uuuu init\uuuu
之前,它工作得很好。我用新的代码更新了这个问题。是的,正如我所说的:在表单的类顶级有一些代码,它们应该在\uuuuuu init\uuuuuu
方法中。所以每个类都可以有一个init?我是否将clientObj=ClientInfo.objects.all()[:1].get()放在其中?找到了解决方案。更新了答案。这是正确的方法吗?考虑到你的“每个类都可以有一个\uuuuuu init\uuuuuuu
”问题,我能得到的唯一有用的答案是“学习Python,伙计”。我知道\uuuuuuu init\uuuuuuu
类似于面向对象语言中的构造函数。但是关于这个特定的用例,它的行为不像一个。我的“表单”未验证,因为传递给它的选定选项未在POST请求中返回。在我引入\uuuu init\uuuu
之前,它工作得很好。我用新的代码更新了这个问题。是的,正如我所说的:您在表单的类顶级中有一些代码,它们实际上应该在\uuuu init\uuuu
class SelectUserForm(forms.Form): _selected_action = forms.CharField(widget=forms.MultipleHiddenInput) def __init__(self, initial, *args, **kwargs): super(SelectUserForm, self).__init__(*args, **kwargs) try: clientObj = ClientInfo.objects.all()[:1].get() client = clientObj.corp client_name = client.shortName client_id = client.cID userList = ZenatixUser.objects.filter(corp__cID=client_id) #user = forms.ModelMultipleChoiceField(userList, label=client_name + ' users ') self.fields['user'] = forms.ModelMultipleChoiceField(userList, label=client_name + ' users ') self._selected_action = forms.CharField(widget=forms.MultipleHiddenInput) except ClientInfo.DoesNotExist: raise Exception('Please add a client info object to the client')