簡體   English   中英

Django model DateField格式為modelformset_factory

[英]Django model DateField format in modelformset_factory

我正在嘗試為名為Book模型制作一個modelform_factory ,但DateField的行為異常。

class Book(models.Model):
   name = models.CharField(max_length = 50)
   date = models.DateField(max_length = 50)

我的views中有一個函數返回以下內容:

modelform = modelformset_factory(Book, fields = (
    'name',
    'date',
),
can_delete=True,
widgets = {
    'date': forms.DateInput(format='%d/%m/%Y'),
})

在我的template此modelform將使用日期選擇器呈現:

$('.datepicker').datepicker({ format: 'dd/mm/yyyy' });

到目前為止,一切都很好,到目前為止,一切都按預期進行。 但是,當我再次將表單發布到視圖中並保存modelformset時, dd/mm/yyyy日期錯誤地轉換為yyyy-mm-dd

if request.method == 'POST':
    formset = modelform(request.POST, request.FILES, queryset=Book.objects.filter(name=book))

    if formset.is_valid():
        formset.save() # This first deletes all instances that are checked for deletion
        f = formset.save(commit=False) # This filters the formset to only include filled in forms
        for form in f:
            form.save()
        return HttpResponse("success")

有人知道如何格式化該dd/mm/yyyy日期以正確輸入我的數據庫嗎?

您可能需要重新格式化日期以匹配字段的要求(yyyy-mm-dd)。 使用dd / mm / yyyy格式的datapicker工具后,您需要通過jQuery更改值。

有點像:

  $("#dateField").on('change', function(){
      var arr = $("#dateField").val().split("/");
      var newDate = arr[2]+"-"+arr[1]+"-"+arr[0];
      $("#dateField").val(newDate);
  });

然后,您需要先在視圖中將該字符串解析為日期類型,然后再使用parse_date保存該字符串:

from datetime import datetime

date = request.POST['dateField']
pDate= parse_date(date)
form.date = pDate
form.save()

在源中: https : //docs.djangoproject.com/zh-CN/2.1/_modules/django/db/models/fields/#DateField https://docs.djangoproject.com/zh-CN/2.1/ref/utils/#module -django.utils.dateparse

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM