Python 如何在django模型中保存日期字段?

Python 如何在django模型中保存日期字段?,python,django,Python,Django,我无法通过模型中的表单保存对象,因为我收到一个错误,上面写着“sportsession.date可能不为NULL” models.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.Date

我无法通过模型中的表单保存对象,因为我收到一个错误,上面写着“sportsession.date可能不为NULL”

models.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
forms.py

class SportSessionForm(ModelForm):
  class Meta:
    model = SportSession
    exclude = ("usuario", "date", "session_id")
views.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)

如果以后要添加对象数据,不应调用
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
字段不能为空,但您试图使用
SportSession.objects.create()
创建对象,而没有传入所需的数据


注意:您有
usuario
字段,该字段也不能为空(请参见代码中的注释)。

您不应该调用
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
字段不能为空,但您试图使用
SportSession.objects.create()
创建对象,而没有传入所需的数据


注意:您有
usuario
字段,该字段也不能为空(请参见我在代码中的注释)。

您还可以使用models.py中的
date=models.DateField(auto\u now\u add=True)
在models.py中自动将字段设置为首次创建对象时的现在。(请参见)

您还可以使用
date=models.DateField(auto\u now\u add=True)
在models.py中,在首次创建对象时自动将字段设置为现在。(请参阅)