In einem Kommentar zu this question answer fragte ich, wie ein Feld mit einer Default-Wert-Funktion entfernt werden. Zusammenfassend ist der Beispielcode:Wie entferne ich eine Default-Wert-Funktion in Django
def get_deadline():
return datetime.today() + timedelta(days=20)
class Bill(models.Model):
name = models.CharField(max_length=50)
customer = models.ForeignKey(User, related_name='bills')
date = models.DateField(default=datetime.today)
deadline = models.DateField(default=get_deadline)
und meine Frage an den Code ist:
Wie entfernen Sie das
deadline
Feld wieder, während auch dieget_deadline
Funktion zu löschen? Ich habe ein Feld mit einer Funktion für einen Standardwert entfernt, aber jetzt stürzt Django beim Start nach dem Entfernen der Funktion ab. Ich könnte die Migration manuell bearbeiten, die in diesem Fall in ok wäre, aber was, wenn Sie einfach die Standardfunktion geändert, und wollte die alte Funktion entfernen?
Ich entfernte den Standardteil der Migration, die darauf bezogen, aber wie entfernen Sie es schön?
Der einzige Weg, den ich mir vorstellen kann, ist, die Migrationen zu zerquetschen, so dass die Migration mit der Funktion verschwindet, aber das ist nicht immer eine Option.
Oder nach @ Alasdair Antwort: 3. Bearbeiten Sie die Migrationen zu verwenden andere (oder keine) Standard – beruic
Ich würde sagen, dass beide Antworten nur zwei Schritte vorschlagen 1) die Migration quetschen 2) die Migration bearbeiten. Wie genau Sie die Migrationen bearbeiten, ist Ihre Entscheidung. Sie könnten die Funktion dort kopieren und die Referenz bearbeiten. Oder Sie können einfach das Standardfeld von dort entfernen, oder Sie können eine andere Funktion von woanders verwenden. :) – AKS
Du solltest deine Antwort dann aktualisieren;) – beruic