Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mgalgs/django_print_models
A Django package to print trimmed down models for easier sharing
https://github.com/mgalgs/django_print_models
django
Last synced: about 2 months ago
JSON representation
A Django package to print trimmed down models for easier sharing
- Host: GitHub
- URL: https://github.com/mgalgs/django_print_models
- Owner: mgalgs
- License: mit
- Created: 2023-10-20T18:35:46.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2023-10-20T19:27:46.000Z (over 1 year ago)
- Last Synced: 2024-11-27T23:32:15.551Z (about 2 months ago)
- Topics: django
- Language: Python
- Homepage: https://pypi.org/project/django-print-models/
- Size: 4.88 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# `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 ...
```## Example
Given the following model definitions:
```python
import datetime
from django.db import models
from django.utils import timezone
from django.contrib import adminclass 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 <= nowclass 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.