Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 11, 2008 19:07:53

securelord
От:
Зарегистрирован: 2006-08-31
Сообщения: 129
Репутация: +  0  -
Профиль   Отправить e-mail  

Many-to-many. Не могу разобраться

Столкнулся с тем что нужно связать две модели связью “многие-ко-многим”.


...
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()
Но оказывается “это” не работает.



Офлайн

#2 Сен. 11, 2008 19:16:26

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Many-to-many. Не могу разобраться

А вы документацию читать пробовали, или на кофейной гуще гадаете?



Офлайн

#3 Сен. 11, 2008 19:36:57

securelord
От:
Зарегистрирован: 2006-08-31
Сообщения: 129
Репутация: +  0  -
Профиль   Отправить e-mail  

Many-to-many. Не могу разобраться

Daevaorn
Прочитал.

Сделал так:

projects.mkey_user.add(form.cleaned_data['mkey_user'])
Получил ошибку:
Exception Value:
Manager must be accessed via instance
Что это значит?



Офлайн

#4 Сен. 11, 2008 20:20:23

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Many-to-many. Не могу разобраться

projects.mkey_user.add(form.cleaned_data['mkey_user'])
А что это Вы привязываете модель к данным формы?
Сначала нужно вытянуть соответствующую данным формы запись user а уже потом её привязывать к проекту.

Отредактировано (Сен. 11, 2008 20:23:49)

Офлайн

#5 Сен. 11, 2008 20:30:19

securelord
От:
Зарегистрирован: 2006-08-31
Сообщения: 129
Репутация: +  0  -
Профиль   Отправить e-mail  

Many-to-many. Не могу разобраться

Ferroman
Я сделал так:

a1 = User.objects.get(id=request.POST['mkey_user'])
projects.mkey_user.add(a1)
и получаю туже ошибку.



Офлайн

#6 Сен. 11, 2008 20:48:42

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Many-to-many. Не могу разобраться

Это потому что projects - это сам класс модели, а не объект класса.

You cannot access a reverse ForeignKey Manager from the class; it must be accessed from an instance.

Офлайн

#7 Сен. 11, 2008 20:51:55

securelord
От:
Зарегистрирован: 2006-08-31
Сообщения: 129
Репутация: +  0  -
Профиль   Отправить e-mail  

Many-to-many. Не могу разобраться

Ferroman
Daevaorn

Работает.
Черт… Аж стыдно за тему.



Офлайн

#8 Сен. 11, 2008 21:24:05

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Many-to-many. Не могу разобраться

Бывает.

Офлайн

#9 Сен. 12, 2008 15:46:48

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Many-to-many. Не могу разобраться

securelord
Работает.
Черт… Аж стыдно за тему.
Правильное именование сущностей почти искусство.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version