Python Django:覆盖子模型中的字段标签或帮助_文本

Python Django:覆盖子模型中的字段标签或帮助_文本,python,django,django-models,django-orm,Python,Django,Django Models,Django Orm,我有几个模型都有一些共同的功能。每个模型都是一种实物库存类型的项目,因此它们共享诸如库存之类的内容,还共享诸如库存不足警告事件(发送电子邮件)之类的内容 我没有复制代码,而是编写了一个抽象模型并从中继承 class LowStockModel(models.Model): stock = stock = models.IntegerField() out_of_stock_behaviour = models.CharField(max_length=20, choices=[.

我有几个模型都有一些共同的功能。每个模型都是一种实物库存类型的项目,因此它们共享诸如
库存
之类的内容,还共享诸如库存不足警告事件(发送电子邮件)之类的内容

我没有复制代码,而是编写了一个抽象模型并从中继承

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:
            #...
class LowStockModel(models.Model):
stock=stock=models.IntegerField()
缺货行为=models.CharField(最大长度=20,选项=[…])
类元:
抽象=真
def保存(自身、*args、**kwargs):
super(self.\uuuuuu class\uuuuuu,self).save(*args,**kwargs)

如果self.stock从抽象类继承时,在Django中,您可能希望使用:

CustomClass.\u meta.get\u field('yourfield')。verbose\u name='Your custom text'

你的课程应该是:

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'
这应该起作用:

class MyForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.fields['stock '].label = "any label"

不要这样做:
super(self.\uuuu class\uuuuuu,self)
你可以很容易地得到无限递归。这不会很漂亮,但是:谢谢@AdamKG,太完美了。