Django:在子模型中覆盖字段标签或帮助文本
我有几个模型,它们都有一些共同的功能。每个模型代表一种实际库存的商品,所以它们共享一些东西,比如 stock
(库存),还有一些像低库存警告事件(发送邮件)这样的功能。
为了避免重复代码,我写了一个抽象模型,然后从这个模型继承。
class LowStockModel(models.Model):
stock = stock = models.IntegerField()
out_of_stock_behaviour = models.CharField(max_length=20, choices=[...])
class Meta:
abstract = True
def save(self, *args, **kwargs):
super(self.__class__, self).save(*args, **kwargs)
if self.stock <= 0:
#...
现在我遇到的问题是,我需要在我创建的子类中更改 stock
字段的标签,或者添加不同的 help_text
(帮助文本)。这非常重要,因为客户和他们的员工需要关于单位的说明。我尝试在子类的 __init__
方法中进行修改,但没有成功。
总结一下:我该如何在子模型中更改字段的标签?
2 个回答
0
这个应该可以用:
class MyForm(ModelForm):
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['stock '].label = "any label"
5
当你从一个抽象类继承时,在Django中你可能想要使用:
CustomClass._meta.get_field('yourfield').verbose_name = '你的自定义文本'
你的类应该像这样:
class AncestorClass(models.Model):
stock = models.CharField(max_length=50, verbose_name='AncestorStockName')
# etc ...
现在我们应该这样自定义子类:
class ChildClass(AncestorClass):
stock = models.CharField... # Customize your stock field
ChildClass._meta.get_field('stock').verbose_name = 'CustomVerboseStock'