62👍
It would be n.pk
.
To quote “Model.pk“:
Regardless of whether you define a
primary key field yourself, or let
Django supply one for you, each model
will have a property called pk. It
behaves like a normal attribute on the
model, but is actually an alias for
whichever attribute is the primary key
field for the model. You can read and
set this value, just as you would for
any other attribute, and it will
update the correct field in the model.
- [Django]-Django Queryset with year(date) = '2010'
- [Django]-Problems extend change_form.html in django admin
- [Django]-Django: OperationalError No Such Table
12👍
The ID will be automatically updated in your model, so immediately after your n.save()
line you can read n.id
and it will be populated.
- [Django]-When saving, how can you check if a field has changed?
- [Django]-.filter() vs .get() for single object? (Django)
- [Django]-PHP Frameworks (CodeIgniter, Yii, CakePHP) vs. Django
10👍
Remove save() and get pk directly:
n = MyData.objects.create(record_title=title, record_content=content)
n.pk
- [Django]-Foreign key from one app into another in Django
- [Django]-Django apps aren't loaded yet when using asgi
- [Django]-"{% extends %}" and "{% include %}" in Django Templates
6👍
If someone reading this question and after check the other answers still having problems accessing the id after the creation of the object.
Be sure you don’t define id
as an Integer in your model. If you decide to declare it anyways, use Autofield
but you don’t need to, It is for free with models.Model
#No
class TestModel(models.Model):
id = models.IntegerField(primary_key=True)
something...
#Ok
class TestModel(models.Model):
id = models.AutoField(primary_key=True)
something...
#Ok
class TestModel(models.Model):
something...
if you do define id
as Integer, TestModel.objects.create(
or with save()
will return None.
- [Django]-Django REST framework: non-model serializer
- [Django]-How can I call a custom Django manage.py command directly from a test driver?
- [Django]-Execute code when Django starts ONCE only?
4👍
I had a similar issue with accessing the id. In Django 3.0.5, this is how I accessed the id. Using your example and variable name, see below:
instance = n.save()
# return the id
instance[0].id
The variable ‘instance’ above is a list. Accessing id in the methods described above returns an AttributeError (“object has no attribute ‘id'”) in Django 3.
This answer applies when using modelformset_factory
. This is true when creating a Form class from a Django model as described in the Django docs
- [Django]-How to query as GROUP BY in Django?
- [Django]-Django check for any exists for a query
- [Django]-How to add new languages into Django? My language "Uyghur" or "Uighur" is not supported in Django