Отображать значение в Charfield для внешнего ключа в django при ошибке - PullRequest
0 голосов
/ 27 февраля 2010

Допустим, у меня есть модель, и у нее есть внешний ключ к другой.

class ModelA(models.Model):
    field = models.CharField(max_length=100)

class ModelB(models.Model):
    model_a = models.ForeignKey(ModelA)

Чем я получил эту форму:

class FormB(models.ModelForm):
    model_a = forms.CharField(required=True)

    def clean(self):
        model_a = self.cleaned_data["model_a"]
        try:
            v = ModelA.objects.get(model_a=model_a)
            self.cleaned_data["model_a"] = v
        except Exception:
            self._errors['model_a'] = ErrorList(["ModelA not found"])
    return self.cleaned_data

Теперь, когда бы я ни вводил значение char в FormB, он будет искать его в ModelA и вернуть очищенные данные.

Когда я использую форму для перечисления ранее существующего экземпляра, он показывает идентификатор, а не значение.

def my_view(request):
    instance = ModelB.objects.get()[0]
    form = FormB(instance=instance)
    return render_to_response("bla.html", {"form" : form})

Кто-нибудь знает, как я мог бы показать значение в этом CharField, когда я передаю экземпляр?

Спасибо, Нико

1 Ответ

0 голосов
/ 27 февраля 2010

Я могу придумать два варианта:

  1. Сделайте model_a поле для ModelB скрытым с помощью editable=false и добавьте CharField к ModelB для сохранения текста, введенного пользователем. Затем покажите это поле в форме, но используйте его значение для заполнения model_a.

  2. Используйте поле автозаполнения, например, используя django-autocomplete . Это позволяет пользователю вводить имя объекта вместо использования виджета select. (Но возвращается к select без JavaScript).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...