Теги (Tags)
Теги доступны у сделок, контактов и компаний. Модель тега —
Tag — содержит два поля: id и name.
from amocrm import Tag
Чтение тегов
При получении сущности из API теги автоматически парсятся из _embedded.tags:
lead = client.leads.get(42)
if lead.tags:
for tag in lead.tags:
print(tag.id, tag.name)
То же самое для контактов и компаний:
contact = client.contacts.get(10)
company = client.companies.get(5)
print(contact.tags) # list[Tag] | None
print(company.tags) # list[Tag] | None
Создание сущности с тегами
Передайте список Tag при создании. Для новых тегов достаточно указать
только name — AmoCRM создаст тег автоматически:
from amocrm import Lead, Tag
lead = Lead(
name="Новая сделка",
price=50000,
tags=[Tag(name="vip"), Tag(name="горячий")],
)
created = client.leads.create([lead])
Чтобы привязать существующий тег, передайте его id:
lead = Lead(
name="Сделка с существующим тегом",
tags=[Tag(id=12345)],
)
client.leads.create([lead])
Аналогично для контактов и компаний:
from amocrm import Contact, Company, Tag
contact = Contact(
name="Иван Иванов",
tags=[Tag(name="важный клиент")],
)
client.contacts.create([contact])
company = Company(
name="ООО Ромашка",
tags=[Tag(name="партнёр")],
)
client.companies.create([company])
Обновление тегов
Замена всех тегов
Присвойте новый список тегов и обновите сущность:
lead = client.leads.get(42)
lead.tags = [Tag(name="vip"), Tag(name="приоритет")]
client.leads.update_one(lead)
Добавление тега
Добавьте тег к существующему списку:
lead = client.leads.get(42)
if lead.tags is None:
lead.tags = []
lead.tags.append(Tag(name="новый тег"))
client.leads.update_one(lead)
Удаление тега
Отфильтруйте нужный тег из списка:
lead = client.leads.get(42)
if lead.tags:
lead.tags = [t for t in lead.tags if t.name != "горячий"]
client.leads.update_one(lead)
Удаление всех тегов
Передайте пустой список:
lead = client.leads.get(42)
lead.tags = []
client.leads.update_one(lead)
Фильтрация по тегам
AmoCRM API позволяет фильтровать сущности по тегам через параметр filter:
# По ID тега
for lead in client.leads.list(filter={"tag_id": 12345}):
print(lead.name)
# По нескольким тегам (OR)
for lead in client.leads.list(filter={"tag_id": [12345, 67890]}):
print(lead.name)
Сериализация
При вызове to_dict() теги помещаются на верхний уровень словаря
(а не в _embedded). Это соответствует формату AmoCRM API для операций записи:
lead = Lead(
name="Сделка",
tags=[Tag(name="vip")],
)
lead.to_dict()
# {"name": "Сделка", "tags": [{"name": "vip"}]}
Модель Tag
- class amocrm.models.common.Tag(*, id=None, name=None)[исходный код]
Базовые классы:
objectТег сущности AmoCRM.
- Переменные:
- Параметры:
- classmethod from_dict(data)[исходный код]
Создать экземпляр из словаря API.
- to_dict()[исходный код]
Сериализовать в словарь, исключая поля со значением
None.