I have two model class Friend(models.Model): me = models.ForeignKey(User) friend = models.ForeignKey(User) remark = models.CharField(max_length=15)
def __unicode__(self): return self.remark class Message(models.Model): from_user = models.ForeignKey(User) to_user = models.ForeignKey(User) ... I make a form for Message class MessageForm(ModelForm): class Meta: model = Message but when i display the form in html, i hope i display to_user's choice list just by 'remark' ( in Friend model) and I override MessageForm 's __init__ method like follow: class MessageForm(ModelForm): class Meta: model = Message def __init__(self,*args,**kwargs): super(MessageForm, self).__init__(*args,**kwargs) init = kwargs.get('initial') if init: if 'from_user' in init: me = init['from_user'] self.fields['to_user'].queryset = Friend.objects.filter(me=me) well when the data post, the form.is_valid() raise error : Cannot assign "<Friend: 小燕>": "Message.to_user" must be a "User" instance. so i want to change self.fields['to_user'] 's value before is_valid() is call like: def is_valid(self): # do something to fix the problem super(MessageForm, self).is_valid() but I don't know how to fix it any suggestion is welcome thks I don't know how to do it , -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.