Проблема с использованием datepicker в форме редактирования
У меня проблемы с редактированием данных в проекте django. Все почти в порядке :) , но если я пытаюсь редактировать данные, моя форма получает все данные из базы данных, кроме поля date. Я нашел решение, как показано ниже, и я вижу datapicker на моей форме редактирования, но я должен заполнить данные в этом поле. Все данные в форме редактирования заполнены, кроме этого поля.
Datapicker для добавления записей работает хорошо. Я использую одну и ту же форму для добавления и редактирования.
Мой forms.py приведен ниже:
from django import forms
from .models import Expens, Category
class DateInput(forms.DateInput):
input_type = 'date'
class ExpensForm(forms.ModelForm):
class Meta:
model = Expens
fields = ('name', 'date', 'category', 'value', 'add_description', 'scan')
labels = {
'name': 'Nawa wydatku:',
'date': 'Data wydatku:',
'category': 'Kategoria wydatku:',
'value': 'Kwota wydatku:',
'add_description': 'Dodatkowy opis:',
'scan': 'Skan paragonu:',
}
widgets ={
'name': forms.TextInput(attrs={'class': 'form-control'}),
'date': DateInput(attrs={'class': 'form-control'}),
'category': forms.Select(attrs={'class': 'form-control'}),
'value': forms.NumberInput(attrs={'class': 'form-control'}),
'add_description': forms.TextInput(attrs={'class': 'form-control'}),
'scan':(),
}
Мой html шаблон для этой формы приведен ниже:
{% extends 'expenses/index.html' %}
{% block tytul %} DATABASE FORMS {% endblock %}
{% load bootstrap5 %}
{{ form.media }}
{% block strona %}
{% if new %}
<h5>Add record</h5>
{% else %}
<h5>Edit record</h5>
{% endif %}
<div class="mb-3">
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{% bootstrap_form form %}
<div class="col-lg-12" style="text-align:center">
{% if new %}
<button type="submit" class="btn btn-success btn-sm">ADD</button>
{% else %}
<button type="submit" class="btn btn-success btn-sm">EDIT</button>
{% endif %}
</div>
</form>
</div>
<div class="col-lg-12" style="text-align:center">
<br>
<br>
<a href= "{% url 'show_record' %}" class="btn btn-success btn-sm">Back</a>
</div>
{% endblock %}
Мой models.py имеет следующий вид:
from django.db import models
# Create your models here.
class Category(models.Model):
name = models.CharField(max_length=60, blank=False, unique=True)
add_description = models.TextField(default="")
def __str__(self):
return self.name
class Expens(models.Model):
name = models.CharField(max_length=120, blank=False, null=False)
date = models.DateField(null=True, blank= True)
category= models.ForeignKey(Category, blank=False, null=True, on_delete=models.SET_NULL)
value = models.DecimalField(max_digits=10, decimal_places=2, null = False, blank=False)
add_description = models.TextField(default="", null=True, blank=True)
scan = models.ImageField(upload_to ="scans", null = True, blank = True)
def __str__(self):
return self.expens_with_data()
def expens_with_data(self):
return "{} ({})".format(self.category, self.date)
Что случилось? :)