Django - 在编辑期间重置数据输入表单中的日期字段

问题描述 投票:0回答:1

我制作了模型、表格和视图。我通过表单添加了一些数据。然后当我想要编辑时,所有字段都已满,但日期字段为空。我想查看我之前添加的日期。但什么也没有。 我使用所有的人工智能解决方案,还有 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}"

表格.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})
django
1个回答
0
投票

您正在初始化的日期似乎是错误的。

initial_date = instance.ucuk_en_son_cikis_tarihi

像这样修改代码即可解决问题。

initial_date = instance.birth_date 
© www.soinside.com 2019 - 2024. All rights reserved.