Django - Как автоматически заполнить поле формы из двух других полей - PullRequest
2 голосов
/ 10 июня 2011

Вот что я ищу. В моей форме у меня есть три поля, все CharFields. Это имя, фамилия и имя пользователя. Имя пользователя должно быть установлено как сумма Имени и Фамилии, поэтому для Имени = Джо, Фамилия = Черный, Имя пользователя = Джо Черный.

При отображении формы все поля все пустые. Я хочу, чтобы он автоматически заполнял имя пользователя, пока я записываю данные в имя или фамилию. Причина в том, что мне не нужно заполнять поле «Имя пользователя», но когда я захочу, я смогу установить его, отличное от Имя + Фамилия.

Возможно ли это без использования jQuery? Если да, есть ли хороший урок по этому вопросу?

1 Ответ

6 голосов
/ 10 июня 2011

1001 * Javascript *

<script type="text/javascript" charset="utf-8">

    function updateUsername(){
        first = document.getElementById("first").value;
        last = document.getElementById("last").value;
        document.getElementById("username").value = first+" "+last;
    }

</script>

тогда вам нужно указать 3 идентификатора полей ввода.

Вот пример

<input type="text" name="some_name" value="" id="first" onkeyup="updateUsername();">
<input type="text" name="some_name" value="" id="last" onkeyup="updateUsername();">
<input type="text" name="some_name" value="" id="username">

Обычно при вводе в него полей #first и #last запускается функция updateUsername (), которая получает их значения и изменяет для них значение #username.

EDIT

Если вы хотите сделать это с django, отредактируйте вашу модель и перезапишите метод сохранения.

def save(self):
    if not self.id:
        self.username = self.first + self.last
    super(MODLE_NAME, self).save()

Что вы будете делать, это когда вы используете метод save (), он возьмет его первое и последнее свойства, обновит значение имени пользователя и сохранит его.

...