python
57 lines · 3 tabs
Priya Sharma
Jan 2026
3 tabs
from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
class Comment(models.Model):
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
text = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
# Generic foreign key fields
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
class Meta:
indexes = [
models.Index(fields=['content_type', 'object_id']),
]
from django.db import models
from django.contrib.contenttypes.fields import GenericRelation
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
# Reverse generic relation
comments = GenericRelation('comments.Comment')
def get_comments(self):
return self.comments.all().select_related('author')
from blog.models import Post
from products.models import Product
from comments.models import Comment
# Add comment to a post
post = Post.objects.get(id=1)
Comment.objects.create(
author=user,
text='Great post!',
content_object=post
)
# Add comment to a product
product = Product.objects.get(id=1)
Comment.objects.create(
author=user,
text='Love this product!',
content_object=product
)
# Query comments
post_comments = Comment.objects.filter(
content_type=ContentType.objects.get_for_model(Post),
object_id=post.id
)
3 files · python
Explain with highlit
ContentTypes enable generic foreign keys pointing to any model. I use GenericForeignKey for features like comments, tags, or favorites on multiple content types. The framework tracks all installed models. I query with content_type and object_id. For reverse relations, I use GenericRelation. This is powerful but harder to query than regular foreign keys. I'm careful about database joins and prefetching. Use cases include activity streams, notifications, and polymorphic associations.
Related snips
python
import os
import stat
for root, _dirs, files in os.walk('/etc'):
for name in files:
path = os.path.join(root, name)
Python security audit script for exposed risky filesystem state
python
auditing
host-security
by Kai Nakamura
1 tab
python
class Product(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField(blank=True)
price = models.DecimalField(max_digits=10, decimal_places=2)
cost = models.DecimalField(max_digits=10, decimal_places=2)
margin = models.DecimalField(max_digits=5, decimal_places=2, blank=True)
Django model signals vs overriding save
django
python
models
by Priya Sharma
2 tabs
python
from django.urls import path
from . import views
app_name = 'blog'
urlpatterns = [
Django URL namespacing and reverse lookups
django
python
urls
by Priya Sharma
3 tabs
python
import graphene
from graphene_django import DjangoObjectType
from blog.models import Post, Comment
class PostType(DjangoObjectType):
Django GraphQL with Graphene
django
python
graphql
by Priya Sharma
2 tabs
python
from django.db.models import Count, Avg, Sum, Q, F
from django.views.generic import TemplateView
from products.models import Product, Order, OrderItem
class DashboardView(TemplateView):
Django aggregation with annotate for statistics
django
python
database
by Priya Sharma
1 tab
python
from rest_framework import permissions
class IsOwner(permissions.BasePermission):
"""Allow only object owner to access."""
Django REST Framework permissions and authorization
django
python
rest
by Priya Sharma
2 tabs
Share this code
Here's the card — post it anywhere.