Поставить дефолтное значение в поле Django
Мне нужно поставить дефолтное значение в поле.
models.py
class OrderModel(models.Model):
client_name = models.CharField(max_length=120, verbose_name='Имя клиента')
order_number = models.IntegerField(verbose_name='Номер заказа', blank=True)
phone_number = models.CharField(max_length=15, verbose_name='Номер телефона')
print_type = models.CharField(choices=PRINT_TYPE_CHOICE, default=PRINT_TYPE_CHOICE[0][0],
verbose_name='Тип печати')
numbers_of_page = models.IntegerField(verbose_name='Кол-во листов')
create_date = models.DateTimeField(auto_now_add=True, blank=True)
file_for_print = models.FileField(upload_to=file_directory_path, verbose_name='Файл')
status = models.CharField(choices=STATUS_CHOICE, default=STATUS_CHOICE[0][0], blank=True, verbose_name='Статус')
views.py
class CreateOrderView(View):
def get(self, r: WSGIRequest):
form = CreateOrderForm()
context = {
'form': form
}
return render(r, 'main_service/create_order.html', context)
def post(self, r: WSGIRequest):
form = CreateOrderForm(r.POST)
if form.is_valid():
OrderModel.objects.create(**form.cleaned_data, order_number=Utl.get_unique_order_number())
return redirect('/')
else:
print(form.errors,
form.cleaned_data)
return HttpResponse('Ошибка, проверьте правильность ввода данных')
forms.py
class CreateOrderForm(ModelForm):
class Meta:
model = OrderModel
fields = ['client_name', 'phone_number', 'numbers_of_page', 'file_for_print', 'print_type']
print_type = ChoiceField(choices=PRINT_TYPE_CHOICE)
widgets = {
'client_name': TextInput(attrs={'class': 'form-control', 'placeholder': 'Имя'}),
'phone_number': TextInput(attrs={'class': 'form-control', 'placeholder': 'Номер телефона'}),
'numbers_of_page': NumberInput(attrs={'class': 'form-control', 'placeholder': 'Кол-во листов'}),
'file_for_print': FileInput(attrs={'class': 'form-control'}),
'print_type': Select(attrs={'class': 'form-select', 'id': 'inputGroupSelect01'}),
}
Поле order_number
должно автоматически само генерироваться, а потом сохраняться вместе с данными формы. Но когда я отправляю POST
запрос, то получаю такую ошибку <ul class="errorlist"><li>file_for_print<ul class="errorlist"><li>Обязательное поле.</li></ul></li></ul>
. Я не понимаю каким образом можно решить мою проблему. Если уже были подобные проблемы, то буду рад увидеть ссылку на статью с решением (английский приемлем)
Источник: Stack Overflow на русском