AttributeError: объект 'FieldInstanceTracker' не имеет атрибута 'saved_data'

Проблема с сигналом post_save?

class Book(models.Model):
    room = models.ForeignKey(Room, on_delete=models.CASCADE, null=False)
    library = models.ForeignKey(Library, on_delete=models.CASCADE, null=False)
    created_at = models.DateTimeField(auto_now_add=True)
    tracker = FieldTracker()


def update_service(sender, instance, **kwargs):

    main_library = Library.object.get(id=1)

if not instance.library == library:
    for book in instance.book_set.all():
       book.delete()

post_save.connect(update_service, sender=Library)

lib/python3.7/site-packages/model_utils/tracker.py in set_saved_fields(self, fields) 106 self.saved_data = self.current() 107 else: --> 108 self.saved_data.update(**self.current(fields=fields)) 109 110 # предотвращение побочных эффектов изменяемых полей AttributeError: у объекта 'FieldInstanceTracker' нет атрибута 'saved_data'

Установите атрибут fields в trackerfield.

Проблема была исправлена в последней версии пакета

class Book(models.Model):
    cls = models.ForeignKey(Class, on_delete=models.CASCADE, null=False)
    library = models.ForeignKey(Library, on_delete=models.CASCADE, null=False)
    created_at = models.DateTimeField(auto_now_add=True)
    tracker = FieldTracker(fields=['XXXX'])

Fields должен содержать список полей, которые вы хотите отслеживать.

class является зарезервированным ключевым словом. Будьте осторожны !

Я нашел решение, оно мне понадобилось для обновления некоторых пакетов.

первым был:

django-model-utils==4.1.1 -> django-model-utils==4.2.0

.

Затем он также принес мне некоторые зависимости с 2 другими пакетами.

openwisp-utils==0.4.5 -> openwisp-utils==1.0.3

swapper==1.1.2 -> swapper==1.3.0

.

После того, как я обновил библиотеки, проблема исчезла.

Также мне не нужно было добавлять поля в Tracker:

tracker = FieldTracker(fields=['XXXX']))

Я разрешаю его по умолчанию:

tracker = FieldTracker()

Просто будьте осторожны с библиотеками, потому что я потратил много времени, думая, что это был мой код, но в конце концов это была проблема с библиотекой.

Вернуться на верх