Django - поле даты в форме ввода данных сбрасывается при редактировании

Я создал модель, форму и представления. Я добавил некоторые данные через форму. Затем, когда я хочу редактировать, все поля заполнены, но поле даты пустое. Я хочу увидеть дату, которую я добавил ранее. Но ничего нет. Я использую все решения ai, а также javascript, jquery, но ничего.

Как я могу решить эту проблему.

enter image description here

У меня есть такая модель и

class Cilt(models.Model):


user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="Kullanıcı")
birth_place = models.CharField(max_length=200, blank=True, null=True, verbose_name="Birth Place")
birth_date = models.DateField(blank=True, null=True, verbose_name="Birth date")

def __str__(self):
    return f"{self.user.username}"

forms.py

class CiltForm(forms.ModelForm):
class Meta:
    model = Cilt
    exclude = ['user']
    fields = '__all__'

    widgets = {
        'birth_place': forms.TextInput(attrs={'class': 'form-control'}),
        'birth_date': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}),
 
 def __init__(self, *args, **kwargs):
    super(CiltForm, self).__init__(*args, **kwargs)
    instance = kwargs.get('instance', None)
    if instance:
        initial_date = instance.ucuk_en_son_cikis_tarihi
        self.fields['birth_date'].initial = initial_date
        self.fields['birth_date'].widget = forms.DateInput(attrs={'class': 'form-control', 'type': 'date'})

редактировать виды

def cilt_duzenle(request, user_id):
ciltler = get_object_or_404(Cilt, user__id=user_id)

if request.method == 'POST':
    form = CiltForm(request.POST, instance=ciltler)
    if form.is_valid():
        form.save()
        return redirect('cilt_detay', user_id=user_id)
else:
    form = CiltForm(instance=ciltler)
return render(request, 'cilt/cilt_duzenle.html', {'form': form})

Похоже, что дата, которую вы инициализируете, неверна.

initial_date = instance.ucuk_en_son_cikis_tarihi

Измените код следующим образом, чтобы решить проблему.

initial_date = instance.birth_date 

Проблема вызвана:

'birth_date': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}),.

Django отображает DateInput как тип 'text' вместо ожидаемого (тип 'date') из-за сложностей с этим вводом, поскольку есть проблемы с ним при использовании различных часовых поясов и форматов местного времени. Существуют способы справиться с этим, но я пока не нашел, как.

Однако, если вы можете обойтись без виджета календаря, то вам не нужно устанавливать тип date, но вы потеряете виджет календаря справа от ввода даты:
calendar widget

Измените свою форму следующим образом:

class CiltForm(forms.ModelForm):
    class Meta:
        model = Cilt
        exclude = ['user']

        widgets = {
            'birth_place': forms.TextInput(attrs={'class': 'form-control'}),
            'birth_date': forms.DateInput(attrs={'class': 'form-control'}),
            }
Вернуться на верх