Предварительная настройка данных формы django перед отображением формы - PullRequest
0 голосов
/ 21 октября 2011

Я отображаю форму django и хочу подготовить некоторые данные поля, прежде чем они будут переданы для визуализации.В django docs я вижу множество мест, где доступны данные формы, но нигде, где данные формы устанавливаются перед отображением.

Есть какие-нибудь мысли или предложения о том, как это сделать?

Вот пример, подобный документации django.

----------- forms.py --------------

class BookForm(ModelForm):
    author = forms.CharField(max_length=100)
    title = forms.CharField(max_length=3,
                widget=forms.Select(choices=TITLE_CHOICES))
    birth_date = forms.DateField(required=False)

----------- views.py --------------

def author_view(request):
    if request.method == 'POST': 
        #  DO My processing... 
    form = BookForm() 
    # How can I edit, or preset my form fields here?
    c = Context({
      'form': form,
    })
    return prepCxt(request, 'book.html', c)   # Wrapper for easy display

1 Ответ

0 голосов
/ 21 октября 2011

В ваших представлениях у вас есть:

def author_view(request):
    if request.method == 'POST': 
        #  DO My processing... 
    form = BookForm() 
    # How can I edit, or preset my form fields here?
    c = Context({
      'form': form,
    })
    return prepCxt(request, 'book.html', c)   # Wrapper for easy display

Вы должны переместить ваш form=BookForm() до if:

def author_view(request):
    form = BookForm() 
    if request.method == 'POST': 
        #  DO My processing... 

В результате получается, что раздел if "POST" добавляет значениев форме, а затем он может быть переопределен.

Во-вторых, если вы пытаетесь что-то изменить способом отображения, вам лучше всего добавить значения по умолчанию / начальные:

Django устанавливает значения формы по умолчанию :

BookForm(initial={ 'myfield': 'myval'})

если вы пытаетесь изменить значения, которые хотите сохранить в БД, то вы:

if form.is_valid():
   myobject = form.save(commit=false)
   myobject.myfield = mval
   myobj.save()

   form = BookForm(instance = myobjext)

Что-то еще?Пожалуйста, будьте более конкретны.

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