I am following a tutorial, and the .save function in the python shell is not working (it was working fine a couple of hours ago!)
Here is /myproject/articles/models.py:
from django.db import models
title = models.CharField(max_length=100)
slug = models.SlugField()
body = models.TextField()
date = models.DateTimeField(auto_now_add=True)
Here is what I called in the terminal:
Seems pretty cut and dry that I should be getting an id back, but nope. Nothing appears if I do Articles.objects.all() either.
Thanks for the help!
.save is a method. So call it like a.save()
Yep! Somehow, despite checking five times, I missed that.
Python question in general, do all method calls require parenthesis?
Why does .id not?
All class methods need to be called with parenthesis to run.
.id is a class attribute and can not be called, it only stores a value.
Further, there are class properties. You can read more on that in the Python documentation.
Another hint: the output from Python tells you here that nothing happened. When you wrote
.save, the output came back:
<bound method ...>. This is Python’s representation of what
.save is. If you call
.save(), it returns
None, so you won’t see any output before the next prompt, like: