2014-10-02 2 views
0

Я хочу создать ограниченную форму с полем ManytoManyДжанго создать ограниченную форму с ManyToMany поле

у меня есть мой models.py как этот

from django.db import models 
from django.contrib.auth.models import User, Group 

class Message(models.Model): 
    sender = models.ForeignKey(User, related_name = 'message_sender') 
    user_receiver = models.ManyToManyField(User, related_name = 'message_receiver', null = True, blank = True) 
    group_receiver = models.ManyToManyField(Group, null = True, blank = True) 
    message_content = models.TextField() 
    send_time = models.DateTimeField('Scheduled Date & Time',null = True, blank = True) 
    MESSAGE_STATUS = (('OUTBOX','Outbox'),('SEND','Send'),('SEEN','Received')) 
    status=models.CharField(max_length = 6, choices = MESSAGE_STATUS) 

мой views.py

def edit_message(request, message_id): 
e_message=Message.objects.get(id=message_id) 
data={'user_receivers':e_message.user_receiver, 
    'group_receivers':e_message.group_receiver, 
    'message':e_message.message_content, 
    'scheduled_time':e_message.send_time 
} 
form=ComposeMessageForm(data) 
context = {'form':form} 
return render(request,'msgin/compose_message.html',context) 

I получить сообщение об ошибке

'ManyRelatedManager' object is not iterable 

Как я могу сделать ограниченную форму с полем ManytoMany

я хочу сделать что-то вроде этого есть заменяющий e_message.user_receiver ...

def edit_message(request, message_id): 
e_message=Message.objects.get(id=message_id) 
data={'user_receivers':[u'1',u'2'], 
    'group_receivers':e_message.group_receiver, 
    'message':e_message.message_content, 
    'scheduled_time':e_message.send_time 
} 
form=ComposeMessageForm(data) 
context = {'form':form} 
return render(request,'msgin/compose_message.html',context) 

здесь данный список предварительно выбранные пользователей этого конкретного MESSAGE_ID

+0

как я могу изменить объект e_message.user_receiver в виде списка, как [u'1' , u'6' ] – wrufesh

ответ

0

Вы забыть all():

data = { 
    'user_receivers': e_message.user_receiver, 
    'group_receivers': e_message.group_receiver.all(), 
    'message': e_message.message_content.all(), 
    'scheduled_time': e_message.send_time 
} 
+0

это даст мне всех существующих пользователей и группы, которые я хочу редактировать уже сохраненные данные m2m ... поэтому мне нужно представить данные в виде списка, например [u'1 ', u'6'] ... – wrufesh

+0

Во-первых, я понятия не имею, что означает '[u'1 ', u'6']'. Во-вторых, почему вы думаете, что 'e_message.group_receiver.all()' будет выводить ** всех ** существующих пользователей? – laike9m

+0

Я уже сохранил объект сообщения со многими полями .... Я хочу отредактировать ранее выбранное поле m2m этого объекта сообщения ... поэтому мне нужно связать форму с ранее выбранным пользователем_пользователем и group_receiver – wrufesh

Смежные вопросы