Warum bricht das Hinzufügen dieser __init __ () -Methode mein Django-Modell?

Diese Frage knüpft an eine Frage an, die ich zuvor gestellt habeHie.

Ich habe ein Django-Modell wie folgt:

class MyModel(models.Model):
    my_field1 = models.DateTimeField(default=datetime.utcnow, editable=False)
    my_field2 = models.DateTimeField()

Es klappt

>>> MyModel.objects.all()
[<MyModel: MyModel object>, <MyModel: MyModel object>,

Nun füge ich den folgenden Konstruktor zu @ hinMyModel:

def __init__(self, **kwargs):
    super(MyModel, self).__init__(**kwargs)
    if self.my_field2 is None:
        self.my_field2 = self.my_field1

Und das bricht die Klasse:

>>> MyModel.objects.all()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "MYvirtualenv/lib/python2.7/site-packages/django/db/models/query.py", line 138, in __repr__
    data = list(self[:REPR_OUTPUT_SIZE + 1])
  File "MYvirtualenv/lib/python2.7/site-packages/django/db/models/query.py", line 162, in __iter__
    self._fetch_all()
  File "MYvirtualenv/lib/python2.7/site-packages/django/db/models/query.py", line 965, in _fetch_all
    self._result_cache = list(self.iterator())
  File "MYvirtualenv/src/django-cache-machine-master/caching/base.py", line 118, in __iter__
    obj = iterator.next()
  File "MYvirtualenv/lib/python2.7/site-packages/django/db/models/query.py", line 255, in iterator
    obj = model_cls.from_db(db, init_list, row[model_fields_start:model_fields_end])
  File "MYvirtualenv/lib/python2.7/site-packages/django/db/models/base.py", line 489, in from_db
    new = cls(*values)
TypeError: __init__() takes exactly 1 argument (2 given)

Warum passiert das, wenn ich den relativ einfachen Konstruktor hinzufüge? Wie soll ich das beheben? Ich brauche die Logik in diesem Konstruktor, damit ich sie nicht einfach eliminieren kann.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage