Доброго времени суток, есть задача добавлять значения в одно поле manytomanyfield
То есть к примеру есть модель dogs, ссылается на dog
В этот dogs нужно добавлять новых dog
На бэкенд приходит queryset dogs с объектами dog
Вопрос собственно немудрёный—как добавить в этот queryset, и, соответственно, в бд, значения?
Вопросы как помню можно редактировать, это лучше, чем накидывать комменты, которые не факт, что все прочитают.
А по вопросу: видно, что из области азов, но так как спустя 13 часов никто сюда ничего не написал - значит я не один такой, и из описания действительно ничего непонятно. Кто такие dogs и dog, как они приходят на бэкенд и зачем там вообще manytomany и почему эти одна из этих собак ссылается на другую. Код был бы отличным дополнением.
Anton Kuzmichev, это лишь пример
Допустим у нас есть модель dogs и dog:
Class Dog(models.Model):
name = models.CharField()
Class Dogs(models.Model):
dog = models.ManyToManyField(Dog)
Немного упрощу пример:
На бэкенде делается запрос в Dogs, и соответственно получается количество Dog в них, возвращается это в виде queryset:
Задача добавить в базу, в Dogs, новые Dog
То есть сделать как-то
Queryset.append(new_dog)
И получить , затем сохранив в базу чем-то вроде Dogs.save()
То есть добавить данные
А как добавить данные в queryset, я как раз и не понимаю
Andrei1penguin1, для начала, опишите человеческим языком то, что представляют собой ваши модели, и какие связи между ними. При проектировании БД очень помогает. Вам тут ещё проще: у вас сущности реального мира. И вроде бы я знаю кое-что о собаках, но в упор не пойму, что такое Dogs, и уж тем более, почему оно с Dog должно быть связано М2М.
Возьмём типичный пример с книгами и теми, кто их пишет - авторами.
Есть книга, у книги есть автор, автор может написать много книг - это связь один-ко-многим, реализуется с помощью ForeignKey:
class Book(models.Model):
title = models.CharField()
author = models.ForeignKey(Author)
class Author(models.Model):
name = models.CharField()
Но ещё часто бывает такое, что книгу написать могут несколько человек в соавторстве - вот тут уже связь много-ко-многим:
class Book(models.Model):
title = models.CharField()
authors = models.ManyToManyField(Author)
class Author(models.Model):
name = models.CharField()
К слову, тут в django под капотом создаётся промежуточная таблица БД для реализации этой связи, и в объектах модели Author появляется поле book_set, через которое можно получить книги, в написании которых конкретный автор принимал участие (был автором или соавтором). Ну это так, для общего развития.
Так что же у вас представляют собой Dogs и Dog, и почему вам там нужна связь много-ко-многим?
Anton Kuzmichev, спасибо, сейчас повторно прочту документацию, возможно что-то упустил
Собаки взяты для примера
У меня ещё вопрос появился
Видимо я неграмотно использую множественные связи
Они ведь должны создаваться в подклассе, я не в классе, тут да, мой косяк
Но когда я делал отношение many-to-many field из dog, а не из dogs, у меня получалось так, что из dogs я не мог получить доступ ко всем dog
То есть сейчас у меня сделано неграмотно и связь многие ко многим построена из класса:
class Dogs:
dog = manytomanyfield(dog)
Class Dog:
name = models.CharField()
А правильно было бы делать это из подкласса:
class Dogs:
class = models.CharField()
class Dog:
dogs = models.manytomanyfield(Dogs)
Но когда я пытался сделать вторым, верным способом, у меня не отображалось поле Dog в Dogs, то есть из класса Dogs я не мог получить доступ ко всем Dog, а мне это было очень нужно
Но не думаю, что это критично, если не давать юзеру создавать лишние модели
И вот что получается, когда я хочу добавить dog в dogs, мне по-идеи нужно добавить новую собаку в queryset со всеми dog, а как это сделать, не понимаю
Сейчас буду читать доки