.add() .set() на m2m reletion django не работает как ожидалось

У меня есть некоторые проблемы с m2m отношениями в Django. Я работаю на локальной базе данных slqlite и mysql на production.

Локально все работает, как я ожидал (с оболочкой и панелью администратора). Но у меня есть проблемы на производстве. Отношение Artwork-ArtCollection определено в модели Artwork:

class Artwork(models.Model):
    ...
    art_collections = models.ManyToManyField("ArtCollection", related_name="artworks", blank=True)

Согласно https://docs.djangoproject.com/en/4.0/topics/db/examples/many_to_many/ Добавление второго раза к отношению m2m нормально, оно не будет дублировать отношение:

>>> a2.publications.add(p3)

но когда я запускаю

artwork = Artwork.objects.get(pk=1)
art_collection = ArtCollection.object.get(pk=1)
artwork.art_collections.add(art_collection)
<

Когда я пытаюсь удалить id art_collections на админ панели (у меня есть raw_id_field) - ничего не происходит. Это мои методы на ArtworkAdmin

    def save_model(self, request, obj, form, change):
        super().save_model(request, obj, form, change)

    def save_related(self, request, form, formsets, change):
        super(ArtworkAdmin, self).save_related(request, form, formsets, change)

что интересно - form.clean_data['art_collections'] возвращает qs только с одним экземпляром ArtCollection - не важно, 5 ли их, когда я нажал кнопку сохранить, или 1 или 2 дублирующихся id были удалены.

Вот как выглядит форма:

from dal import autocomplete

class ArtWorkForm(autocomplete.FutureModelForm):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    class Meta:
        model = Artwork
        fields = (
            ...
            "art_collections",
        )
        widgets = {
            ...
        }
        help_texts = {
            ...
        }

Спасибо за любые советы.

Вернуться на верх