У меня есть две модели
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)
...
Я создаю форму для сообщения
class MessageForm(ModelForm):
class Meta:
model = Message
, но когда я отображаю форму в html, я надеюсь, что я отображаю список выбора to_user просто 'Замечание '(в модели Friend)
, и я переопределяю метод MessageForm * init , подобный следующему:
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)
хорошо при отправке данных, form.is_valid () ошибка ошибки: невозможно назначить "": "Message.to_user" должен быть экземпляром "User".
, поэтому я хочу изменить значение self.fields [to_user '] до вызова is_valid ()как:
def is_valid(self):
# do something to fix the problem
super(MessageForm, self).is_valid()