Как сохранить отношения "многие ко многим
Я хочу сохранить отношения "многие ко многим", но получаю эту ошибку: Прямое присвоение прямой стороне множества "многие ко многим" запрещено. Вместо этого используйте users.set().
models.py
class Department(models.Model):
id = models.AutoField(primary_key=True)
department = models.CharField(max_length=60)
info_grafana = models.TextField()
users = models.ManyToManyField(User)
views.py
class ViewUserAccount(View):
def get(self, request, id_account: int, *args, **kwargs) -> render:
return render(request, 'settings/UserAccount.html', {
'title': f'Аккаунт пользователя {request.user}',
'account': User.objects.get(id=id_account),
'direction': Department.objects.all()
})
def post(self, request, id_account, *args, **kwargs):
id_direction = request.POST.get('direction_id')
id_project = request.POST.get('project_id')
if id_direction:
direction = Department.objects.get(id=id_direction)
direction.users = User.objects.get(id=id_account)
direction.save()
if id_project:
pass
return redirect(request.META.get('HTTP_REFERER'))
как мне решить эту проблему?
вот что я получаю от frontend
<QueryDict: {'csrfmiddlewaretoken': ['G1P0UIxoATVsTLM7hGnmWT7z1GyTskrZIr0svdKTQfrsH67zW2OAiCO0kAvLHPuC'], 'direction_id': ['7'], 'project_id': ['']}>
Вы должны добавить его следующим образом.
Измените эту строку следующим образом.
direction.users.add(User.objects.get(id=id_account))
Посмотрите это для лучшего понимания.
>>> a2 = Article(headline='NASA uses Python')
>>> a2.save()
>>> a2.publications.add(p1, p2)
>>> a2.publications.add(p3)