Django Add Members
Creating new database records
➕ Adding Records in Django
Django offers several methods to add new records to your database. You can create objects programmatically, use forms, or add through the admin interface. Each method automatically handles database insertion and validation.
# Create a new member
member = Member(firstname="John", lastname="Doe")
member.save()
Methods to Add Records
Create & Save
Instantiate then save object
obj = Model()
obj.save()
objects.create()
Create and save in one step
Model.objects.create()
Form Submission
Add via web forms
form.save()
Admin Interface
Add through admin panel
# Click "Add" in admin
🔹 Create and Save Method
Create a model instance by instantiating the class with field values, then call save() to insert it into the database. This two-step process allows you to modify the object before saving if needed.
# views.py or Django shell
from .models import Member
# Create new member instance
member = Member()
member.firstname = "John"
member.lastname = "Doe"
member.email = "[email protected]"
member.phone = "123-456-7890"
member.joined_date = "2024-01-15"
# Save to database
member.save()
print(f"Added member: {member.firstname} {member.lastname}")
🔹 Using objects.create()
The create() method combines instantiation and saving in one step. This is the most concise way to add records and is preferred when you have all the data ready at once.
# views.py
from .models import Member
# Create and save in one step
member = Member.objects.create(
firstname="Jane",
lastname="Smith",
email="[email protected]",
phone="987-654-3210",
joined_date="2024-01-20"
)
print(f"Created member with ID: {member.id}")
🔹 Add Multiple Records
Use bulk_create() to add multiple records efficiently with a single database query. This is much faster than creating records one by one when you need to insert many objects at once.
# views.py
from .models import Member
# Create list of member objects
members = [
Member(firstname="Alice", lastname="Johnson", email="[email protected]"),
Member(firstname="Bob", lastname="Williams", email="[email protected]"),
Member(firstname="Carol", lastname="Brown", email="[email protected]"),
]
# Bulk create all at once
Member.objects.bulk_create(members)
print(f"Added {len(members)} members")
⚠️ Note:
bulk_create() does not call save() method or trigger signals. Use it for simple insertions only.
🔹 Add via Form View
Create a view that handles form submissions to add new records. This allows users to add data through your website, with Django handling validation and database insertion automatically through the form processing.
# views.py
from django.shortcuts import render, redirect
from .models import Member
def add_member(request):
if request.method == 'POST':
# Get data from form
firstname = request.POST.get('firstname')
lastname = request.POST.get('lastname')
email = request.POST.get('email')
phone = request.POST.get('phone')
joined_date = request.POST.get('joined_date')
# Create new member
Member.objects.create(
firstname=firstname,
lastname=lastname,
email=email,
phone=phone,
joined_date=joined_date
)
return redirect('member_list')
return render(request, 'add_member.html')
<!-- add_member.html -->
<form method="post">
{% csrf_token %}
<input type="text" name="firstname" placeholder="First Name" required>
<input type="text" name="lastname" placeholder="Last Name" required>
<input type="email" name="email" placeholder="Email" required>
<input type="text" name="phone" placeholder="Phone">
<input type="date" name="joined_date" required>
<button type="submit">Add Member</button>
</form>
🔹 Add with ModelForm
Use Django's ModelForm to automatically generate forms from your models. ModelForm handles validation, error messages, and saving, making it the recommended approach for adding records through web forms.
# forms.py
from django import forms
from .models import Member
class MemberForm(forms.ModelForm):
class Meta:
model = Member
fields = ['firstname', 'lastname', 'email', 'phone', 'joined_date']
widgets = {
'joined_date': forms.DateInput(attrs={'type': 'date'}),
}
# views.py
from django.shortcuts import render, redirect
from .forms import MemberForm
def add_member(request):
if request.method == 'POST':
form = MemberForm(request.POST)
if form.is_valid():
form.save()
return redirect('member_list')
else:
form = MemberForm()
return render(request, 'add_member.html', {'form': form})
<!-- add_member.html -->
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Add Member</button>
</form>
🔹 Add via Admin Interface
The Django admin provides a user-friendly interface to add records without writing code. Simply register your model, navigate to the admin panel, and click the "Add" button to create new records through a form.
# admin.py
from django.contrib import admin
from .models import Member
@admin.register(Member)
class MemberAdmin(admin.ModelAdmin):
list_display = ('firstname', 'lastname', 'email', 'joined_date')
# Now you can:
# 1. Go to http://127.0.0.1:8000/admin/
# 2. Click on "Members"
# 3. Click "Add Member" button
# 4. Fill in the form
# 5. Click "Save"