擅长:python、mysql、java
<p>我相信mixin可以实现您想要的功能,并提供一种简单且可重用的方法来支持计算中的临时值。通过将下面的示例混合到您想要的每个模型中,您可以:</p>
<ul>
<li>为每个模型设置临时父值</li>
<li>调用calculate时,它将检查是否有可用的属性父值,如果没有,它将在计算中使用临时父值。在</li>
</ul>
<p>下面的代码应该达到你想要的-抱歉,我还没能测试它,但它应该是正确的-请让我知道如果有任何问题需要编辑。在</p>
<pre><code>class CalculateMixin(object):
@property
def temp_parent_value(self):
return self._temp_parent_value
@temp_parent_value.setter
def temp_parent_value(self, value):
self._temp_parent_value = value
@property
def calculate(self):
parent_value = self.parent_value if self.parent_value else self.temp_parent_value
return parent_value + 1
class SecondModel(models.Model, CalculateMixin):
parent = models.ForeignKey(FirstModel)
self.temp_parent_value = 'Whatever value you desire'
@property
def parent_value(self):
return self.parent.base_value
</code></pre>