Join Django ORM models having no relations.
Project description
django-join-unrelated
Use SQL Join with Django ORM models having no relations.
If you have models in your project that share the same data but have no relations, you might face a situation when you need to join them. But Django does not provide this functionality yet.
With django-join-unrelated
you can do the following
(models defined here):
from app.core.models import Jedi, Person
Person.objects.create(first_name='Padme', last_name='Amidala', birth_place='Naboo')
Person.objects.create(first_name='Obi-Wan', last_name='Kenobi', birth_place='Stewjon')
Jedi.objects.create(first_name='Obi-Wan', last_name='Kenobi', force=100)
Jedi.objects.create(first_name='Mace', last_name='Windu', force=80)
Jedi.objects.join(first_name=Person.first_name).values_list('first_name')
# <UnrelatedJoinQuerySet [('Obi-Wan',)]>
print(Jedi.objects.join(first_name=Person.first_name).values_list('first_name').query)
# SELECT "core_jedi"."first_name" FROM "core_jedi" INNER JOIN core_person ON ("core_jedi"."first_name" = core_person."first_name")
django-join-unrelated
tries to keep all QuerySet power where it is possible:
Jedi.objects.join(first_name=Person.first_name).filter(last_name='Kenobi')
# <UnrelatedJoinQuerySet [<Jedi: Jedi object (1)>]>
Jedi.objects.join(first_name=Person.first_name).filter(last_name='Windu')
# <UnrelatedJoinQuerySet []>
Installation
You can install django-join-unrelated
using pip:
pip install django-join-unrelated
Usage
Just import UnrelatedJoinManager
and set it as an attribute to your models:
from django.db import models
from django_join_unrelated import UnrelatedJoinManager
class Jedi(models.Model):
first_name = models.CharField('First name', max_length=128)
last_name = models.CharField('Last name', max_length=128)
force = models.IntegerField('Force')
objects = UnrelatedJoinManager()
class Meta:
verbose_name = 'Jedi'
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for django-join-unrelated-0.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfe14967c4356f2357b03a9195de0e2330b5abbf6d9e9be4b78b8585f3cee636 |
|
MD5 | bfa667fc1679c0df1a50b64a4a4e0d83 |
|
BLAKE2b-256 | 218314a0048d31a86469b1e7ec779a6085ecdd7fb65820eaad09aff11b083560 |
Close
Hashes for django_join_unrelated-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28d44298f44924436662a1a3d453dcd4bcae8fadd3d25434840835bddf76ee8b |
|
MD5 | fac409d38fce1252dc08ae2a4af3ee25 |
|
BLAKE2b-256 | b5b5ad23d07ceaf473ca2ba4acc1a0322c09ee0409ab32e87e78653a37a7c147 |