Skip to main content

A Django package to print trimmed down models for easier sharing.

Project description

django_print_models

A Django package that provides a management command to print trimmed down models for easier sharing. Prints your models with just the field definitions, trimming out other methods, properties, etc.

This is handy when you want to ask ChatGPT or fellow humans a question where the context of your model field definitions is important (e.g. when trying to build a complex query), but the rest of your crappy model definition doesn't matter.

Installation

  1. pip install django-print-models
  2. Add django_print_models to your INSTALLED_APPS in Django settings.

Usage

python manage.py print_models <app_name> <model_name1> <model_name2> ...

Example

Given the following model definitions:

import datetime
from django.db import models
from django.utils import timezone
from django.contrib import admin


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.question_text

    @admin.display(
        boolean=True,
        ordering='pub_date',
        description='Published recently?',
    )

    def was_published_recently(self):
        now = timezone.now()
        return now - datetime.timedelta(days=1) <= self.pub_date <= now


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text

print_models will print the following:

> python manage.py print_models polls Question Choice
class Question(models.Model):
    id = models.BigAutoField(null=False, blank=True, db_index=False)
    question_text = models.CharField(max_length=200, null=False, blank=False, db_index=False)
    pub_date = models.DateTimeField(null=False, blank=False, db_index=False)

class Choice(models.Model):
    id = models.BigAutoField(null=False, blank=True, db_index=False)
    question = models.ForeignKey("Question", null=False, blank=False, db_index=True)
    choice_text = models.CharField(max_length=200, null=False, blank=False, db_index=False)
    votes = models.IntegerField(null=False, blank=False, db_index=False)

Obviously in this simple example it would have been quite easy to just copy/paste the relevant model definitions, but for larger, more complex models this becomes tedious.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_print_models-0.4.tar.gz (4.3 kB view hashes)

Uploaded Source

Built Distribution

django_print_models-0.4-py3-none-any.whl (5.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page