Найти - Пользователи
Полная версия: Many-to-many. Не могу разобраться
Начало » Django » Many-to-many. Не могу разобраться
1
securelord
Столкнулся с тем что нужно связать две модели связью “многие-ко-многим”.


...
from django.contrib.auth.models import User

class projects(models.Model):
name_proj = models.CharField(max_length=255)
mkey_user = models.ManyToManyField(User)
....
вопрос состоит в том, как связать данные “projects” c User.
Данные для модели projects получаются так:

....
form = AddProjectForm(request.POST)
if form.is_valid():
project = projects(name_proj = form.cleaned_data['name_proj']).save()
...
Как теперь сделать связь ума не приложу :)
Выходит что то вроде:
 project.mkey_user.add(form.cleaned_data['mkey_user']).save()
Но оказывается “это” не работает.
Александр Кошелев
А вы документацию читать пробовали, или на кофейной гуще гадаете?
securelord
Daevaorn
Прочитал.

Сделал так:

projects.mkey_user.add(form.cleaned_data['mkey_user'])
Получил ошибку:
Exception Value:
Manager must be accessed via instance
Что это значит?
Ferroman
projects.mkey_user.add(form.cleaned_data['mkey_user'])
А что это Вы привязываете модель к данным формы?
Сначала нужно вытянуть соответствующую данным формы запись user а уже потом её привязывать к проекту.
securelord
Ferroman
Я сделал так:
a1 = User.objects.get(id=request.POST['mkey_user'])
projects.mkey_user.add(a1)
и получаю туже ошибку.
Ferroman
Это потому что projects - это сам класс модели, а не объект класса.
You cannot access a reverse ForeignKey Manager from the class; it must be accessed from an instance.
securelord
Ferroman
Daevaorn

Работает.
Черт… Аж стыдно за тему.
Ferroman
Бывает.
Александр Кошелев
securelord
Работает.
Черт… Аж стыдно за тему.
Правильное именование сущностей почти искусство.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB