Есть модель Order с несколькими полями, одно из полей - dealer - внешний ключ на модель Dealer. У дилера есть, в частности, поле email.
Для модели Order создается форма с помощью form_for_instance, поле dealer в ней отображается выпадающим списком, и все хорошо, все работает.
class Dealer(models.Model): name = models.CharField(maxlength=40, unique=True) email = models.EmailField(blank=True, null = True) ... class Order(models.Model): ... # Такой limit_choices_to не фильтрует dealer = models.ForeignKey(Dealer, limit_choices_to = {'email__contains': '@'}) ...
Тогда в form_for_instance добавляю аргумент formfield_callback, которому отдаю функцию:
def field_callback(field, **kwargs): if field.name == 'dealer': return forms.ChoiceField(label=u'Select a Dealer', choices = field.get_choices(True), **kwargs) else: return field.formfield(**kwargs)
Но здесь другая проблема: после подмены поля на ChoiceField модель перестает понимать это поле как внешний ключ к дилеру, при сохранении получаю ошибку DoesNotExist.
Подскажите, в чем я не прав?
Да, python 2.5.1 (cygwin), WinXP, django (At revision 6525)