Mam kilka modeli, z których wszystkie mają wspólną funkcjonalność. Każdy model jest fizycznie zaopatrzonym rodzajem przedmiotu, więc udostępnia takie rzeczy, jak stock
, a także udostępnia pewne rzeczy, takie jak powiadomienia o niskim stanie zapasowym (wysyła wiadomość e-mail).Django: Zastąp etykietę pola lub tekst pomocnika w pliku podrzędnym Model
Zamiast duplikować kod, napisałem abstrakcyjny model i odziedziczyłem go.
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:
#...
Moim problemem jest to, że trzeba zmienić etykietę lub dodać inny help_text
do pola stock
w klasach potomnych ja tarłem. Jest to bardzo ważne, ponieważ klient (i jego pracownicy) potrzebują instrukcji na temat jednostek. Próbowałem munging wokół dziecka __init__
, ale nigdzie się nie dostaję.
tl; dr Jak zmienić etykietę na polu z modelu podrzędnego?
Nie rób tego: 'super (self .__ class__, self)' Możesz łatwo uzyskać nieskończoną rekursję. – DrTyrsa
To nie będzie ładne, ale: http://stackoverflow.com/a/928774/16361 – AdamKG
Dzięki @AdamKG to jest idealne. – Oli