1 из многих вызовов переопределенного django `Model.save()` выдает ошибку pylint `unexpected-keyword-arg` - как мне ее удовлетворить?
Я внедрил и использую этот модельный (супер)класс, который я создал в течение многих лет, и он полностью стабилен на активном сайте. Я просто внес небольшую поправку в совершенно несвязанную часть его кода и проверил свою работу (на своей машине) с последней версией суперлинтера. Наши CI-тесты на github в настоящее время используют старый суперлинтер, и он никогда не жаловался, поэтому я был удивлен, увидев ошибку линтинга в коде, к которому я не прикасался уже много лет.
В моем классе модели есть переопределенный метод save()
, который добавляет несколько дополнительных аргументов, которые он выводит kwargs
перед вызовом super().save()
. У меня есть несколько вызовов сохранения внутри класса, и линтер прекрасно справляется с этими дополнительными аргументами везде, кроме одного места (переопределение from_db
):
@classmethod
def from_db(cls, *args, **kwargs):
# Instantiate the model object
rec = super().from_db(*args, **kwargs)
# If autoupdates are not enabled (i.e. we're not in "lazy" mode)
if not cls.get_coordinator().are_lazy_updates_enabled():
return rec
# Get the field names
queryset_fields = set(args[1]) # field_names
# Intersect the queryset fields with the maintained fields
common_fields = set(cls.get_my_update_fields()).intersection(queryset_fields)
# Look for maintained field values that are None
lazy_update_fields = [fld for fld in common_fields if getattr(rec, fld) is None]
if len(lazy_update_fields) > 0:
# Trigger a lazy auto-update
rec.save(fields_to_autoupdate=lazy_update_fields, via_query=True)
return rec
Я пробовал выделять шрифтом rec
при присвоении, но это не удовлетворило линтер. Я полагаю, что именно вызов super().from_db()
устанавливает тип, который не включает мои args... но моя перегрузка сохранения определенно вызывается.
Так как же мне удовлетворить pylint
здесь?