Django ForeignKey that links to one of several specified models
Django ForeignKey that links to one of several specified models:
class Comment(models.Model): user = models.ForeignKey(User) text = models.TextField() # users may leave comments for blog posts, articles or votings object = MultiForeignKey(Post, Article, Voting)
Unlike GenericForeignKey, the field uses native database foreign keys and provides maximum speed and reliability.
This is a preliminary alpha version which most probably doesn’t fully work as advertised. I had to publish it unfinished because I had to use it in my project.
pip install django-multiforeignkey
Add multiforeignkey to INSTALLED_APPS:
# settings.py INSTALLED_APPS = [ ... 'multiforeignkey', ]
Add a field to your models:
# comments/models.py from multiforeignkey.models import MultiForeignKey class Comment(models.Model): user = models.ForeignKey(User) text = models.TextField() # users may leave comments for blog posts, articles or votings object = MultiForeignKey(Post, Article, Voting)
Create the corresponding database tables:
./manage.py makemigrations && ./manage.py migrate
Use the new field as if it were a real database field:
comment = Comment.objects.filter(object=post) assert comment.object is post comment.object = voting assert comment.object is voting comment.save()
or use specific subfields:
comment = Comment.objects.filter(post=post) assert comment.post is post assert comment.article is None assert comment.voting is None comment.voting = voting assert comment.post is None assert comment.article is None assert comment.voting is voting comment.save()
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size django-multiforeignkey-0.0.2.tar.gz (3.2 kB)||File type Source||Python version None||Upload date||Hashes View hashes|
Hashes for django-multiforeignkey-0.0.2.tar.gz