我正在遷移到Django 1.7。我有一些信號通過一個未保存的模型實例,現在拋出TypeError: Model instances without primary key value are unhashable
。Django 1.7:傳遞未保存的實例會拋出「不可干擾」異常
我想知道Django pre_save
信號如何通過實例呢?我正在瀏覽文檔,甚至發現在1.7(https://github.com/django/django/commit/6af05e7a0f0e4604d6a67899acaa99d73ec0dfaa)中實現了這個提交,我不知道它是如何工作的。
有人可以向我解釋pre_save如何解決這個問題,或者我可以如何繞過這個限制嗎?謝謝。
實施例以下代碼:
from django.dispatch import Signal
send_text = Signal()
unsaved_model = SomeModel() # note that neither `create` or `.save()` are being called
send_text.send(sender=unsaved_model) # error gets thrown when this gets called
回溯:
File "/home/ubuntu/fangsterr-app/notifications/models.py", line 43, in send
send_text.send(sender=self)
File "/home/ubuntu/virtualenvs/venv-2.7.5/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 194, in send
if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS:
File "/home/ubuntu/virtualenvs/venv-2.7.5/lib/python2.7/site-packages/django/db/models/base.py", line 484, in __hash__
raise TypeError("Model instances without primary key value are unhashable")
TypeError: Model instances without primary key value are unhashable
我不知道的是參數的信號是哈希的任何要求。你能顯示產生錯誤的實際代碼以及完整的回溯嗎? – 2014-09-28 05:08:46
剛剛添加了一個示例 – fangsterr 2014-09-28 06:35:46
請提供完整的回溯。 – 2014-09-28 06:48:51