<p>根据Simon和Burhan的提示,我找到了以下解决方案:在设置中定义受影响的模型,然后将dragtotatable类作为基类添加到这些模型中。在设置中如下所示:</p>
<pre><code>DROPPABLE_MODELS=('test.TestItem:item',)
</code></pre>
<p>这就是将应用程序功能应用于该模型或我的项目的任何其他模型所需要做的全部工作。这个型号.py我的应用程序的外观如下:</p>
<pre><code>from django.contrib.contenttypes.models import ContentType
from django.conf import settings
try:
#perform this when starting the project
for definition in settings.DROPPABLE_MODELS:
#parse contenttype
parsed=definition.split(':')
dropcode=parsed[1]
parsed=parsed[0].split('.')
appname=parsed[0]
modelname=parsed[1]
#get the models class for the specified contenttype
model_class=ContentType(app_label=appname, model=modelname).model_class()
#create class Mixin, containing the dropcode property
class DragToTagable:
dropcode = dropcode
#add DragToTagable as a base class to the model class
model_class.__bases__+=(DragToTagable,)
except AttributeError:
pass
except:
import sys
print "Unexpected error:", sys.exc_info()[0]
raise
</code></pre>
<p>这样我就不必像burhans提案那样创建额外的表。而且该应用程序保持完全独立,不需要对现有模型进行任何工作即可实现。你知道吗</p>
<p>谢谢你的小费。你知道吗</p>