django-query-view

Django view for querying data


License
MIT
Install
pip install django-query-view==0.1.4

Documentation

Django Query View

Django view for querying data

Installation

To get the latest stable release from PyPi

pip install django-query-view

Usage

Set up models

from django.db import models
from taggit.managers import TaggableManager
from taggit.models import TaggedItemBase
from query_view.models import TypedTag
from query_view.models import make_typed_tag_tagged_model

class TaggedThing(TaggedItemBase):
    content_object = models.ForeignKey('Thing', on_delete=models.CASCADE)


class Thing(models.Model):
    name = models.CharField(max_length=200)
    is_good = models.BooleanField()

    tags = TaggableManager(through=TaggedThing, blank=True)

    def __str__(self):
        return self.name

# Subclass TypedTag
class ActorTypedTag(TypedTag):
    pass

# Create your tagged model like this
ActorTaggedThing = make_typed_tag_tagged_model('ActorTaggedThing', ActorTypedTag, Thing, app_label='testproject')

# Or like this
class ActorTaggedThing(TaggedItemBase):
    typed_tag = models.ForeignKey(
        ActorTypedTag,
        related_name="%(app_label)s_%(class)s_items",
        on_delete=models.CASCADE,
    )
    content_object = models.ForeignKey(Thing, on_delete=models.CASCADE)

    class Meta:
        unique_together = ['typed_tag', 'content_object']

Create a typed tagged item

t = Tag.objects.get(name='clint eastwood')
ActorTaggedThing.objects.create(content_object=thing, typed_tag=t.actortypedtag)

Run the test project

python manage.py migrate
python manage.py loaddata testproject/fixtures/tag_thing.json
python manage.py runserver

Dump fixture

python manage.py dumpdata --indent 4 testproject.Thing testproject.TaggedThing taggit.Tag testproject.LanguageTypedTag testproject.LanguageTaggedThing testproject.DirectorTypedTag testproject.DirectorTaggedThing testproject.ActorTypedTag testproject.ActorTaggedThing --output testproject/fixtures/tag_thing.json