如何保存Django模型中的日期字段?

2024-10-01 17:39:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法从模型中通过窗体保存对象,因为我收到一个错误,它显示“运动会日期不能为空“

在模型.py在

class SportSession(models.Model):
session_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
sport_type = models.ForeignKey(SportType)
date = models.DateField()
usuario = models.ForeignKey(User)

def __unicode__(self):  # python 2
    return self.name

在表单.py在

^{pr2}$

在视图.py在

def sport(request):
  form = SportSessionForm(request.POST or None)
  if form.is_valid():
    form_data = form.cleaned_data  # obtenemos la info del formulario
    obj = SportSession.objects.create()
    obj.name = form_data.get("name")
    obj.sport_type = form_data.get("sport_type")
    obj.date = date.today()
    obj.save()
  context = {
    "sport_session_form": form,
  }
  return render(request, "sport.html", context)

Tags: namepy模型formobjdatadatemodels
2条回答

如果以后要添加对象数据,则不应调用create方法,只需创建它的实例:

obj = SportSession()
obj.name = form_data.get("name")
obj.sport_type = form_data.get("sport_type")
obj.date = date.today()
obj.usuario = request.user  # You need to set this as well to appropriate user instance
obj.save()

您得到的错误是因为模型中的date字段不能为null,但您试图使用SportSession.objects.create()创建一个对象,而没有传递所需的数据。在

注意:您的usuario字段也不能为空(请参阅代码中的注释)。在

您也可以在中使用date = models.DateField(auto_now_add=True)模型.py在第一次创建对象时自动将字段设置为now。(请参见https://docs.djangoproject.com/en/dev/ref/models/fields/#datefield

相关问题 更多 >

    热门问题