在 Django 中覆盖继承模型的字段选项
Override Field Option on Inherited Model in Django
我找到了类似的问题和答案,但 none 似乎完全正确。我有一个像这样的抽象基础模型:
class BaseModel(models.Model):
timestamp = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
description = models.CharField(max_length=512, blank=True, null=True, help_text='Help')
class Meta:
abstract = True
然后我继承了它:
class AnotherModel(BaseModel):
field1 = models.CharField(max_length=512)
但我希望 description
字段中此模型的 help_text
是其他内容,例如 help_text='Some other help text'
最好的方法是什么?我可以覆盖继承模型字段的选项吗?
如果这真的是关于帮助文本,我建议只覆盖 ModelForm。但是,您可以使用工厂和 return 内部 class:
def base_factory(description_help: str = "Standard text"):
class BaseModel(models.Model):
timestamp = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
description = models.CharField(
max_length=512, blank=True, null=True, help_text=description_help
)
class Meta:
abstract = True
return BaseModel
class ConcreteModel(base_factory("Concrete help")):
field1 = ...
我找到了类似的问题和答案,但 none 似乎完全正确。我有一个像这样的抽象基础模型:
class BaseModel(models.Model):
timestamp = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
description = models.CharField(max_length=512, blank=True, null=True, help_text='Help')
class Meta:
abstract = True
然后我继承了它:
class AnotherModel(BaseModel):
field1 = models.CharField(max_length=512)
但我希望 description
字段中此模型的 help_text
是其他内容,例如 help_text='Some other help text'
最好的方法是什么?我可以覆盖继承模型字段的选项吗?
如果这真的是关于帮助文本,我建议只覆盖 ModelForm。但是,您可以使用工厂和 return 内部 class:
def base_factory(description_help: str = "Standard text"):
class BaseModel(models.Model):
timestamp = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
description = models.CharField(
max_length=512, blank=True, null=True, help_text=description_help
)
class Meta:
abstract = True
return BaseModel
class ConcreteModel(base_factory("Concrete help")):
field1 = ...