擅长:python、mysql、java
<p>尝试使用工厂模式设置<code>AbstractModel</code>的不同版本。在</p>
<p>使用这种方法,您可以更严格地控制通过工厂函数<code>dynamic_fieldname_model_factory</code>修改{<cd1>}的方式。在</p>
<p>我们也不会在<code>ModelOne</code>或{<cd5>}之后修改它们的定义——其他解决方案已经指出这有助于避免可维护性问题。在</p>
<p>在模型.py公司名称:</p>
<pre><code>from django.db import models
def dynamic_fieldname_model_factory(fields_prefix):
class AbstractModel(models.Model):
class Meta:
abstract = True
AbstractModel.add_to_class(
fields_prefix + '_title',
models.CharField(max_length=255, blank=True, default=''),
)
return AbstractModel
class ModelOne(dynamic_fieldname_model_factory('someprefix1')):
id = models.AutoField(primary_key=True)
class ModelTwo(dynamic_fieldname_model_factory('someprefix2')):
id = models.AutoField(primary_key=True)
</code></pre>
<p>以下是此代码生成的迁移:</p>
^{pr2}$