Krukov / amocrm_api

Python amocrm API wrapper
MIT License
104 stars 55 forks source link

Не понимаю, как использовать filter #71

Closed vprsnc closed 2 years ago

vprsnc commented 2 years ago

Не понятно, как использовать фильтры, какие бы параметры я не вводил (в виде словарей, просто аргументов итд) выдает TypeError: GenericInteraction.get_all() got multiple values for argument 'include' Можно какой-то пример, как этими фильтрами можно пользоваться? Спасибо заранее

Krukov commented 2 years ago

Привет, А ты с какой сущностью используешь (Lead, Contact, Events. ..) ? Может там баг в одной из них ))

в общем и целом выглядит это так

In [4]: next(Lead.objects.filter(query="test"))
Out[4]: Lead(account_id = 12097842, closest_task_at = None, contacts = <amocrm.v2.fields._ListData object at 0x7f0cf94412b0>, created_at = 2019-05-26 06:03:00, group_id = 0, id = 30093183, is_deleted = False, loss_reason = [], loss_reason_id = None, name = Заявка с сайта (заказ), None = <class 'amocrm.v2.entity.note.NotesField.on_get_instance.<locals>.Note'>, price = 0, score = None, updated_at = 2019-05-27 07:59:18)

In [5]: next(Lead.objects.filter(query=30093183))
Out[5]: Lead(account_id = 12097842, closest_task_at = None, contacts = <amocrm.v2.fields._ListData object at 0x7f0cf8e48df0>, created_at = 2019-05-26 06:03:00, group_id = 0, id = 30093183, is_deleted = False, loss_reason = [], loss_reason_id = None, name = Заявка с сайта (заказ), None = <class 'amocrm.v2.entity.note.NotesField.on_get_instance.<locals>.Note'>, price = 0, score = None, updated_at = 2019-05-27 07:59:18)

или вот тут тоже пример https://github.com/Krukov/amocrm_api/issues/50#issuecomment-990813412

Lead.objects.filter(query="test") - возвращает генератор

vprsnc commented 2 years ago

Я пробовал фильтровать по Lead, не додумался, что нужно делать так же как при Lead.objects.get т.е. через query; Я пробовал вставлять аргументы вида Lead.objects.filter({"updated_at": "2021-08-13"}). Окей с query понятно, спасибо большое :) А есть ли возможность по конкретному полю какому-то фильтровать? Вот хотя по тому же "updated_at"...

Krukov commented 2 years ago

по идеи надо попробовать вот так

from amocrm.v2 import filters, Lead

updated_at = int(time.mktime(datetime.date(2021, 11, 1).timetuple()))

last_leads = Lead.objects.filter(
    filters=[filters.SingleFilter("updated_at")(updated_at)]
)
vprsnc commented 2 years ago

Не сработало к сожалению( Может чего не так делаю? С родным классом Lead тоже пробовал - то же самое

Screenshot 2022-07-15 at 18 48 38
Krukov commented 2 years ago

Посмотрел в документацию амо - по таким полям как updated_at нельзя искать точное совпадение - толкьо за промежуток

list(Lead.objects.filter(filters=[filters.DateRangeFilter("updated_at")(now-timedelta(days=1), now)]))
vprsnc commented 2 years ago

Отлично! Все сработало, спасибо большое, что помогли разобраться :)

Shmanov commented 1 year ago

Фильтр по датам не работает если поле кастомное

Arkptz commented 1 year ago

Фильтр по датам не работает если поле кастомное image