Models in Django Rest Framework provide the user an ease to handle databases. In Django the user does not even have to write the SQL query to create or alter tables, just create the model, run some commands and it will create the table for you, that’s the beauty of Django. In this blog, we will learn about how to copy Django model instance objects. But before moving ahead let’s have a sneak peek about models.

What is a Model?
A table in our database is represented by the classes in our models. Every member of the class is a field of the table. We create models in the app > models.py file. Example of a model is shown below:-
from django.db import models # Create your models here. class Employee(models.Model): name=models.CharField(max_length=50) salary=models.IntegerField()
Here Employee is the table name, name and salary are the attributes of the table, where name can store only character value whose maximum length is 50 and salary can store only integer value.
Procedure to Copy Django Model Instance Objects
Here, is the abstract explanation about steps to copy Django model instance objects.
- Create a model
- Make an html file
- Define a function
- Create an object of model
- Copy the model instance
- Provide the path for the function
Implementation
Step1. Create a model
- Create a model in your app >models.py file, here in this example I had created a model named Student.
Models.py
from django.db import models # Create your models here. class Student(models.Model): name=models.CharField(max_length=50) age=models.IntegerField() country=models.CharField(max_length=50)
2. Add a database to your project by adding the following code in your project > settings.py file.
Settings.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'bloglogindecorator', 'USER': 'postgres', 'PASSWORD':"2320", 'HOST': 'localhost' } }
3. Run the following code in your command prompt one by one to migrate your model.
python manage.py makemigrations
Note:- Please change logindecorator to your app name while running the second command.
python manage.py sqmigrate logindecorator 0001 python manage.py migrate
Step2. Provide Url path to the function in app> urls.py file.
Urls.py
from django.urls import path from . import views urlpatterns = [ path('blogcopymodel',views.blogcopymodel,name="blogcopymodel") ]
Step3. Create a Function
First we will just create an object of the normal model and pass it to the html file.
- Import your model.
- Define a function in app > views.py file.
- Make an instance or object of the model, pass the parameters and save the model.
- Get the object of that model
- Pass it to the html file.
Views.py
from django.shortcuts import render from .models import Student def blogcopymodel(request): student=Student(name="Akshay", age=24,country="India") student.save() return render(request,'blogcopymodel.html',{'s1':s1})
Blogcopymodel.html
<html> <head> <title>BlogCopyModel</title> </head> <body> <h1>Name:{{s1.name}}</h1> <h1>Age:{{s1.age}}</h1> <h1>Country:{{s1.country}}</h1> </body> </html>
Output :-

Now, We will copy django model instance objects
- Copy the object.
- Instantiate the values and pass it to the html file
Views.py
from django.shortcuts import render from .models import Student def blogcopymodel(request): s1=Student.objects.get(pk=1) s2=s1 s2.name="Akriti" s2.age=24 s2.country="America" return render(request,'blogcopymodel.html',{'s1':s1,'s3':s3})
Blogcopymodel.html
<html> <head> <title>BlogCopyModel</title> </head> <body> <h1>Name:{{s1.name}}</h1> <h1>Age:{{s1.age}}</h1> <h1>Country:{{s1.country}}</h1> <h1>Name:{{s2.name}}</h1> <h1>Age:{{s2.age}}</h1> <h1>Country:{{s2.country}}</h1> </body> </html>
Output:-

See, we had copy the objects successfully, in above picture values of both the objects are changed as we change the value of copied object
Now, We will copy the django model instance object and instantiate its values without changing the actual object.
- Get the object and store it into new object
- Change its id and pk (primary key) equals to none so that django will create it automatically.
- Now change the values of the newly created object
- Pass it to the html
Views.py
from django.shortcuts import render from .models import Student def blogcopymodel(request): s3=Student.objects.get(pk=1) s3.pk=None s3.id=None s3.name="Varun" s3.age=31 s3.country="Africa" s3.save() s1=Student.objects.get(pk=1) return render(request,'blogcopymodel.html',{'s1':s1,'s3':s3})
Blogcopymodel.html
<html> <head> <title>BlogCopyModel</title> </head> <body> <h1>Name:{{s1.name}}</h1> <h1>Age:{{s1.age}}</h1> <h1>Country:{{s1.country}}</h1> <h1>Name:{{s3.name}}</h1> <h1>Age:{{s3.age}}</h1> <h1>Country:{{s3.country}}</h1> </body> </html>
Output :-

See, we had copied the object without making any changes in the previous object’s value.
Conclusion
So, we had learned how to copy Django model instance object. I hope this blog will be useful for you and helps you to understand each and every step. Hope all your doubts get cleared. Thank you.