Вы можете настроить пользовательский ModelChoiceField
, который вернет любую метку, которую вы хотите.
Поместите что-то вроде этого в поле fields.py или где это применимо.
class UserModelChoiceField (ModelChoiceField): def label_from_instance (self, obj): return obj.get_full_name ()
Затем при создании формы просто используйте это поле
UserModelChoiceField (queryset = User.objects.filter (is_staff = False), required = False)
Подробнее здесь
Валидатор анализируется, когда страница изначально загружена. Когда вы добавляете динамический контент, вам нужно повторно обработать валидатор. Измените свой сценарий, чтобы включить следующие строки после загрузки содержимого.
$(this).load(actionURL, function (html) {
// Reparse the validator
var form = $('form');
form.data('validator', null);
$.validator.unobtrusive.parse(form);
$('form', html).submit(function () {
....
Боковое примечание: код, который вы показали, не включает @Html.ValidationMessageFor(m => m.MaterialCode)
, но я предполагаю, что это включено.
$("form").removeData("validator");
по существу совпадает сform.data('validator', null);
в этом контексте. Первый удаляет ранее добавленный валидатор, используя .removeData () , где, когда второй устанавливает его наnull
, используя .data () .$("form").removeData("unobtrusiveValidation");
в другом ответе не является действительно необходимым, потому что$.validator.unobtrusive.parse(form);
эффективно сбрасывает это в любом случае. (и это напоминает мне. Я собираюсь добавить ответ по одному из ваших вопросов из нескольких дней назад :) – Stephen Muecke 23 July 2018 в 10:50