2014-07-18 6 views
0

복합 키를 사용하는 레거시 db에 django-compositekey를 연결하여 사용할 계획입니다. 모든 것이 제대로 작동하는지 확인하기 위해 간단한 모델로 새로운 Django 프로젝트를 만들었습니다. 나는 모든 것이 잘 될 것 같다 django_manage.py SQL 책을 사용하는 경우 나는 다음과 같은 오류syncdb가 django-compositekey와 함께 실패했습니다

Creating tables ... 
Traceback (most recent call last): 
File "/home/islas/pycharm-3.4.1/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/islas/PycharmProjects/BooksDemo/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 285, in execute 
output = self.handle(*args, **options) 
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 415, in handle 
return self.handle_noargs(**options) 
File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/syncdb.py", line 112, in handle_noargs 
emit_post_sync_signal(created_models, verbosity, interactive, db) 
File "/usr/local/lib/python2.7/dist-packages/django/core/management/sql.py", line 216, in emit_post_sync_signal 
interactive=interactive, db=db) 
File "/usr/local/lib/python2.7/dist-packages/django/dispatch/dispatcher.py", line 185, in send 
response = receiver(signal=self, sender=sender, **named) 
File "/usr/local/lib/python2.7/dist- packages/django/contrib/auth/management/__init__.py", line 93, in create_permissions 
"content_type", "codename" 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 538, in values_list 
_fields=fields) 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 852, in _clone 
c._setup_query() 
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 995, in _setup_query 
self.query.add_fields(self.field_names, True) 
File "/usr/local/lib/python2.7/dist-packages/compositekey/db/models/sql/query.py", line 24, in add_fields 
True) 
ValueError: need more than 5 values to unpack 

Process finished with exit code 1 

을받을 syncdb를 사용하려고하면

from django.db import models 
from compositekey import db 

class Book(models.Model): 
id = db.MultiFieldPK("author", "name") 
name = models.CharField(max_length=100) 
author = models.CharField(max_length=100) 

, 나는, 그러나

BEGIN; 
CREATE TABLE "Books_book" (
"name" varchar(100) NOT NULL, 
"author" varchar(100) NOT NULL, 
UNIQUE ("author", "name"), 
PRIMARY KEY ("author", "name") 
) 
; 

COMMIT; 

를받을 아무도 무엇이 잘못 되었을지에 대한 생각을 갖고 있습니까? 나는 Django에 익숙하지 않지만 복합 기본 키로 작업하는 것을 읽는 한 지금 django-compositekey를 사용하는 것이 가능하다. 사전에

감사합니다,

알레한드로

사용하는 Django 버전
+0

호환성을 위해 django 1.4를 사용해야합니다. –

답변

1

...? 내가 Djnago 1.5.8를 사용했기 때문에 저도 같은 문제가 생겼와 compositekey 패키지는 기본 장고 ORM 대신 SQLAlchemy을 사용할 수 있습니다, 복합 기본 키를 들어 Djnago 1.5.8

를 지원하지 않습니다. Django ORM과 완벽하게 공존 할 수 있습니다.

+0

나는 Django 1.6.5를 사용하고 있는데, 그것은 제가 생각하기에 가장 최근의 공식적인 버전이라고 생각합니다. 감사!!! – user3851205

+0

아니요, 여기서 유일한 문제는 버전 호환성입니다. 어쨌든 복합 기본 키를 사용하려면 Django 기본 ORM 대신 [SQLAlchemy] (http://www.sqlalchemy.org/)를 사용할 수 있습니다. SQLAlchemy는 Django ORM과 공존 할 수 있습니다. – Shivratna

관련 문제