Skip to content

randomknowledge/django-multilingual-tags

 
 

Repository files navigation

Django Multilingual Tags

A reusable Django app that allows you to add translatable tags to any other model.

Installation

To get the latest stable release from PyPi

pip install django-multilingual-tags

To get the latest commit from GitHub

pip install -e git+git://github.com/bitmazk/django-multilingual-tags.git#egg=multilingual_tags

Add multilingual_tags to your INSTALLED_APPS

INSTALLED_APPS = (
    ...,
    'multilingual_tags',
)

Don't forget to migrate your database

./manage.py migrate multilingual_tags

Usage

To add tags to a model, you have to add the TaggedItemInline to that model's admin. In your own apps, you can just do the following:

from django.contrib import admin

from multilingual_tags.admin import MultilingualTagsAdminMixin

from my_app import models

class MyModelAdmin(admin.ModelAdmin):
    inlines = [TaggedItemInline]

admin.site.register(models.MyModel, MyModelAdmin)

This will render the inline admin form for adding tagged items.

If you want to add tags to a third party app, you might need to import its admin instead of Django's ModelAdmin and then unregister and re-register the model. One way to do it would be this:

from django.contrib import admin

from multilingual_tags.admin import TaggedItemInline

from other_app.admin import SomeModelAdmin
from other_app.models import SomeModel

class SomeModelCustomAdmin(SomeModelAdmin):
    # be careful, if the other admin also defines admins, you need to add
    # them as well
    inlines = SomeModelAdmin.inlines + [TaggedItemInline]

admin.site.unregister(SomeModel)
admin.site.register(SomeModel, SomeModelCustomAdmin)

To get all the tags for an object, you can simply use the TagManager:

# Get all tags for a certain model instance
>> Tag.objects.get_for_obj(mymodel_instance)

[<Tag: mytag>, <Tag: myothertag>]

# .. or get all tags for an entire queryset
>> Tag.objects.get_for_queryset(MyModel.objects.all())

[<Tag: mytag>, <Tag: myothertag>]

Contribute

If you want to contribute to this project, please perform the following steps

# Fork this repository
# Clone your fork
mkvirtualenv -p python2.7 django-multilingual-tags
make develop

git co -b feature_branch master
# Implement your feature and tests
git add . && git commit
git push -u origin feature_branch
# Send us a pull request for your feature branch

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%