.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 = {
...
}
Спасибо за любые советы.