mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2025-12-24 02:39:20 -05:00
23 lines
1.2 KiB
Python
23 lines
1.2 KiB
Python
def add_to_relation(relation_model, base_field_name, base_ids, related_field_name, related_ids):
|
|
"""
|
|
given a model, the base and related field and the base and related ids, bulk create relation objects
|
|
"""
|
|
relation_objects = []
|
|
for b in base_ids:
|
|
for r in related_ids:
|
|
relation_objects.append(relation_model(**{base_field_name: b, related_field_name: r}))
|
|
relation_model.objects.bulk_create(relation_objects, ignore_conflicts=True, unique_fields=(base_field_name, related_field_name,))
|
|
|
|
|
|
def remove_from_relation(relation_model, base_field_name, base_ids, related_field_name, related_ids):
|
|
relation_model.objects.filter(**{f'{base_field_name}__in': base_ids, f'{related_field_name}__in': related_ids}).delete()
|
|
|
|
|
|
def remove_all_from_relation(relation_model, base_field_name, base_ids):
|
|
relation_model.objects.filter(**{f'{base_field_name}__in': base_ids}).delete()
|
|
|
|
|
|
def set_relation(relation_model, base_field_name, base_ids, related_field_name, related_ids):
|
|
remove_all_from_relation(relation_model, base_field_name, base_ids)
|
|
add_to_relation(relation_model, base_field_name, base_ids, related_field_name, related_ids)
|