Ich habe ein Modell/eine Klasse mit eigenen Methoden, um einige Daten zu berechnen. Kürzlich muss ich ein neues boolesches/Auswahlfeld is_producing
einführen, basierend auf dieser Feldberechnung wird an mehreren Stellen geändert, besonders bei Eigenschaftsmethoden. Wie unter Beispiel:Wie wird mit Verhaltensänderungen eines Modells nach der Einführung eines neuen Feldes umgegangen?
class Lease(models.Model):
name = models.CharField(max_length=250)
@property
def owner_count(self):
return 27 # for example
class Lease(models.Model):
name = models.CharField(max_length=250)
is_producing = models.BooleanField(default=True)
@property
def owner_count(self):
if self.is_producing:
return 27 # for example
else:
return 20 # for example
class Offer(models.Model):
lease = models.ForeignKey(Lease)
amount = models.FloatField()
def save(self):
if self.lease.is_producing:
self.amount = 100 # For Example
else:
self.amount = 200
Es scheint, dass if/else
an allen Orten mit Anti-Muster und nicht intuitiv. Auf der anderen Seite, wenn wir ein neues Modell mit diesem neuen Feld erstellen, wird es viel Code kopieren und Modelle verbinden.
So suche ich nach Design-Muster, die das obige Szenario oder jede andere elegante Lösung lösen können, die es mit weniger Code-Duplikation lösen würde.
Sie haben hier den ganzen Kontext verpasst. Kennst du Django ein bisschen? – jbacker