Skip to main content

Creating Records

Via Manager

The simplest way to create a record:

post = await Post.objects.create(title="Hello World", slug="hello-world")
print(post.pk) # Auto-populated

Via Model Instance

post = Post(title="Hello World", slug="hello-world")
await post.save() # INSERT
print(post.pk)

get_or_create

Create if it doesn't exist, otherwise return the existing record:

post, created = await Post.objects.get_or_create(
slug="hello-world",
defaults={"title": "Hello World", "active": True},
)

if created:
print("New post created")
else:
print("Post already exists")

update_or_create

Update if it exists, otherwise create:

post, created = await Post.objects.update_or_create(
slug="hello-world",
defaults={"title": "Updated Title", "views": 0},
)

Bulk Create

For inserting many records at once:

from ryx.bulk import bulk_create

posts = [
Post(title="Post 1", slug="post-1"),
Post(title="Post 2", slug="post-2"),
Post(title="Post 3", slug="post-3"),
]

created = await bulk_create(posts, batch_size=100)
print(f"Created {len(created)} posts")
tip

bulk_create bypasses per-instance hooks (clean, before_save, after_save) and signals for performance. Validate data beforehand.

Next Steps

Reading — Retrieve records