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,太完美了。