Python 如何在django模型中保存日期字段?
我无法通过模型中的表单保存对象,因为我收到一个错误,上面写着“sportsession.date可能不为NULL” models.pyPython 如何在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
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中,在首次创建对象时自动将字段设置为现在。(请参阅)