#django
#django
Вопрос:
У меня есть большая форма, некоторые поля, зависит от значения других полей для вычисления. С тех пор я использовал jquery blur для отправки формы каждый раз, когда пользователь редактирует поле, и снова перенаправляет его в updateview с новыми значениями.
У меня есть этот day_absent и отсутствует количество, чтобы проверить это. Если я просто помещу form.day_absent в форму и помещу object.amt_absent, форма не сохраняется. Но если я добавлю form.amt_absent , он сохранит форму.
Почему это так? Я не хочу указывать amt_absent как редактируемый, это должен быть просто day_absent .
class PayrollTransactionUpdate(LoginRequiredMixin,UpdateView):
model = t_pay
template_name = 'payroll/transaction/update.html'
fields = [
'day_absent',
'amt_absent',
]
<div id='input-item' class="col-1">
{{ form.day_absent }}
{{ form.day_absent.errors}}
</div>
<div id='item' class="col-2">
{{ object.amt_absent }}
</div>
Комментарии:
1. сделайте
amt_absent
как только для чтения, если вы не хотите, чтобы он был доступен для редактирования, или сделайте егоrequired = False
Ответ №1:
Пара моментов:
-
При использовании вы
{{object.amt_absent}}
не отображаете форму для поляamt_absent
, а просто значение, сохраненное в БД. -
Вы добавили
amt_absent
в качестве поля для включения в UpdateView, поэтому до тех пор, пока это поле не станет обязательным, форма будет продолжать выдавать ошибку для этого поля. Вот почему ваша форма работает, когда вы включаете оба поля. Вы можете проверить все ошибки, используя{{form.errors}}
или поле, указанное{{form.amt_absent.errors}}
в вашем шаблоне.
Комментарии:
1. Спасибо, Аман, теперь он работает. Это нормально, что я это делаю? Я боюсь, что это может вызвать некоторые проблемы в моей базе данных, не так ли? поскольку пользователь может вызвать многократное сохранение в базе данных. чтобы дать вам представление ( imgur.com/a/SsWeZng ) вот как выглядит форма
2. Нет, это просто форма. Вы можете контролировать, какое поле показывать, как его обрабатывать и т.д. когда вы используете
{{object.amt_absent}}
, вы просто выполняете чтение из базы данных. Здесь вы просто управляете тем, как отображается форма, так что все хорошо. Для обработки обработки формы из представлений обратитесь к документации