I can't save an object through form from model because i get an error that says "sportsession.date may not be 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)
You should not call create
method if you want to add object data later, just create an instance of it:
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()
The error you get was because date
field in your model can't be null but you were trying to create an object using SportSession.objects.create()
without passing in the required data.
Note: You have usuario
field which can't be null as well (see my note in code).
您还可以在models.py中使用date = models.DateField(auto_now_add=True)
在首次创建对象时将字段自动设置为现在。(请参阅https://docs.djangoproject.com/en/dev/ref/型号/字段/#datefield )
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.