擅长:python、mysql、java
<p>我想出了两种为每个对象定义特定函数的方法。一种是使用marshal创建可以存储在数据库中的字节码(不是一种好方法),另一种方法是根据Randall的建议,存储对要运行的函数的引用。以下是我使用存储引用的解决方案:</p>
<pre><code>class MyModel(models.Model):
data = models.CharField(max_length=100)
action_module = models.CharField(max_length=100)
action_function = models.CharField(max_length=100)
class SecondModel(models.Model):
other_data = models.IntegerField()
mymodel = models.ForeignKey(MyModel)
secondmodel_obj = SecondModel.objects.get(other_data=3)
#The goal is to run a function specific to the instance
#of MyModel referred to in secondmodel_obj
module_name = secondmodel_obj.mymodel.action_module
func_name = secondmodel_obj.mymodel.action_function
module = __import__(module_name)
func = vars(module)[func_name]
func()
</code></pre>
<p>感谢所有回复我的人,如果不是你的帮助,我不可能得到这个答案。在</p>