Pydantic модель: как исключить поле из хеширования/сравнения по эквалайзеру?Python

Программы на Python
Ответить
Anonymous
 Pydantic модель: как исключить поле из хеширования/сравнения по эквалайзеру?

Сообщение Anonymous »

У меня есть следующая хэшируемая пидантическая модель:

Код: Выделить всё

class TafReport(BaseModel, frozen=True):
download_date: dt
icao: str
issue_time: dt
validity_time_start: dt
validity_time_stop: dt
raw_report: str
Теперь я не хочу, чтобы эти отчеты считались разными только потому, что у них другая дата загрузки (я вставляю ее с помощью datetime.now()). Как я могу исключить download_date из рассмотрения в функциях __hash__ и __eq__, чтобы я мог выполнять такие трюки, как:

Код: Выделить всё

tafs = list(set(tafs))
и у вас уникальный набор тафов, даже если у двух из них могут быть разные даты загрузки? Я ищу решение, при котором мне не придется перезаписывать методы __hash__ и __eq__...
Я просмотрел эту тему, но она только отвечает, как вообще исключить поле из модели (чтобы оно не отображалось в дампе json), но я хочу, чтобы оно отображалось в дампе json.

Подробнее здесь: https://stackoverflow.com/questions/793 ... q-compared
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»