2014-12-01 33 views
0

我使用photologue創建與Django照片庫網站。我在我的virtualenv中安裝了django-tagging,不知道它已經不再被photologue支持。現在,執行遷移後,無論何時嘗試添加照片或查看照片,我都會在/ admin/photologue/photo/upload_zip/ 處收到FieldError無法將關鍵字「項目」解析爲字段。選擇是:id,name。無法將關鍵字'項目'解析爲字段。選擇是:身份證,名稱

我卸載並重新安裝了django,photologue,SQLite文件,並刪除了django-tagging,但問題依然存在。我也嘗試運行一個使用photologue並共享virtualenv的不同項目,並提示我執行相同的(假定具有破壞性的)遷移。

如果問題涉及多個項目,並且所有依賴關係都已全新安裝,我無法弄清楚我的系統上可能發生了什麼變化。

異常位置:/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/db/models/sql/query.py在raise_field_error,線1389

回溯:

Environment: 


Request Method: POST 
Request URL: http://localhost:8000/admin/photologue/photo/add/ 

Django Version: 1.7.1 
Python Version: 2.7.6 
Installed Applications: 
('django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.sites', 
'sortedm2m', 
'photologue', 
'photologue_custom', 
'pornsite') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware') 


Traceback: 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    111.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in wrapper 
    584.     return self.admin_site.admin_view(view)(*args, **kwargs) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view 
    105.      response = view_func(request, *args, **kwargs) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func 
    52.   response = view_func(request, *args, **kwargs) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner 
    204.    return view(request, *args, **kwargs) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in add_view 
    1454.   return self.changeform_view(request, None, form_url, extra_context) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper 
    29.    return bound_func(*args, **kwargs) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view 
    105.      response = view_func(request, *args, **kwargs) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func 
    25.     return func.__get__(self, type(self))(*args2, **kwargs2) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/db/transaction.py" in inner 
    394.     return func(*args, **kwargs) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in changeform_view 
    1405.     self.save_model(request, new_object, form, not add) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in save_model 
    1046.   obj.save() 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/photologue/models.py" in save 
    540.   super(Photo, self).save(*args, **kwargs) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/photologue/models.py" in save 
    491.   super(ImageModel, self).save(*args, **kwargs) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/db/models/base.py" in save 
    591.      force_update=force_update, update_fields=update_fields) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/db/models/base.py" in save_base 
    628.         update_fields=update_fields, raw=raw, using=using) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/dispatch/dispatcher.py" in send 
    198.    response = receiver(signal=self, sender=sender, **named) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/tagging/fields.py" in _save 
    81.    Tag.objects.update_tags(kwargs['instance'], tags) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/tagging/models.py" in update_tags 
    34.           items__object_id=obj.pk)) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/db/models/manager.py" in manager_method 
    92.     return getattr(self.get_queryset(), name)(*args, **kwargs) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/db/models/query.py" in filter 
    691.   return self._filter_or_exclude(False, *args, **kwargs) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/db/models/query.py" in _filter_or_exclude 
    709.    clone.query.add_q(Q(*args, **kwargs)) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/db/models/sql/query.py" in add_q 
    1287.   clause, require_inner = self._add_q(where_part, self.used_aliases) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/db/models/sql/query.py" in _add_q 
    1314.      current_negated=current_negated, connector=connector) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/db/models/sql/query.py" in build_filter 
    1138.   lookups, parts, reffed_aggregate = self.solve_lookup_type(arg) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/db/models/sql/query.py" in solve_lookup_type 
    1076.   _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/db/models/sql/query.py" in names_to_path 
    1383.    self.raise_field_error(opts, name) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/db/models/sql/query.py" in raise_field_error 
    1389.       "Choices are: %s" % (name, ", ".join(available))) 

Exception Type: FieldError at /admin/photologue/photo/add/ 
Exception Value: Cannot resolve keyword 'items' into field. Choices are: id, name 
+0

您是否比較過遷移在db中更改的內容?您是否嘗試在卸載django-tagging後恢復遷移?你也可以直接在sqlite shell的'./manage.py dbshel​​l'中查看你的表,看看是否有一些「剩菜」......但如果你已經從頭開始創建了sqlite文件,那麼可能不會。 – andzep 2014-12-01 23:55:35

+0

我刪除了遷移文件夾並再次運行makemigrations。模型和遷移再次進行,問題依然存在。 – 2014-12-02 01:07:29

回答

1

這個問題似乎來自這樣一個事實,即django標記在virtualenv上仍然存在。

在photologue後您的回溯節省了模型,Django的標記反應的發送信號,並嘗試更新任何相關標籤:

File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/django/dispatch/dispatcher.py" in send 
    198.    response = receiver(signal=self, sender=sender, **named) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/tagging/fields.py" in _save 
    81.    Tag.objects.update_tags(kwargs['instance'], tags) 
File "/home/cameron/Envs/photologue/local/lib/python2.7/site-packages/tagging/models.py" in update_tags 
    34.           items__object_id=obj.pk)) 

在那裏,它會嘗試使用(顯然不存在了)場items ,那就是發生錯誤的地方。

我想你在venv上卸載django-tagging的方式並沒有真正起作用。你是否卸載了:​​?

供參考,在這裏再次我的評論/步驟,來重新創建VENV

...如果你VENV以某種方式損壞,最簡單的可能是重新建立新:

  1. 在您VENV做:

    env pip freeze > orig_requirements.txt

    檢查orig_requirements.txt並刪除你不需要的一切。

  2. 讓沒有站點包新VENV並重新安裝要求:

    mkvirtualenv --no-site-packages photoenv

    pip install -r orig_requirements.txt

  3. 現在仔細檢查你在這個VENV運行Django項目時

    workon photoenv

0

那麼錯誤很簡單 - 因爲你要求數據庫中不存在的字段。由於您沒有發佈代碼,因此很難更具體。建立了一個模板,引用了一個不再存在的名爲'items'的字段?

請編輯您的問題,包括一個完整的追溯以及一些代碼,你認爲這個問題可能是。

完整的回溯會讓您更好地瞭解問題所在。

+0

好的,我認爲部分問題可能是這樣的:我從Env/photologue/local/lib/python2.7/site-packages中刪除了photologue,當我嘗試運行runserver時,它告訴我沒有模塊photologue。很公平。當我運行pip install photologue時,它表示需求已經滿足。我懷疑它是關於安裝在Env/photologue/lib/python2.7/site-packages中的photologue,它具有Env/photologue/local/lib/python2.7/site-packages中所有內容的副本(我是新手Ubuntu的,所以我不知道爲什麼文件系統是這樣的。) – 2014-12-02 01:14:45

+1

有一個問題......你打電話給你的venv photologue?可能與它無關,但可以肯定的是,也許它可能是一個很好的機會,叫venv別的東西。還有一些需要檢查的問題1)你確定兩個網站包都是重複的嗎?或者那些只是符號鏈接? ...(tbc) – andzep 2014-12-02 11:27:24

+1

2)如果你的venv損壞了,最簡單的辦法就是重新創建它。只要在你的photologue(?)env'pip freeze> orig_requirements.txt'(也許檢查那些,如果一切看起來不錯,刪除所有你不需要的東西),然後做一個沒有網站包的新venv:'mkvirtualenv --no-site-packages photoenv'並且,如果您的要求看起來不錯,請重新安裝它們。如果沒有,編輯該文件,直到您在安裝之前只有您需要的文件。 'pip install -r orig_requirements.txt'。現在仔細檢查你在運行你的django項目'workon photoenv'時是否在這個venv。 – andzep 2014-12-02 11:28:35

相關問題