Skip to content

Automatically update multiple foreign keys in the Django admin

License

Notifications You must be signed in to change notification settings

DjangoAdminHackers/django-multi-fk

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

django-multi-fk

License PyPI Version PyPI Downloads

In order to explain what this package does and the problem it solves, consider the following models:

class Something(models.Model):
    pass

class Someone(models.Model):
    thing1 = models.ForeignKey(Something, related_name='+')
    thing2 = models.ForeignKey(Something, related_name='+')

Registering both of these models in the Django admin results in the following <select> fields:

Django Admin

Clicking the "+" next to "Thing1" causes a popup window to open which can be used to add a new item. Once the popup is dismissed, the new item appears in the <select> for "Thing1" but not in the <select> for "Thing2". This is the problem that django-multi-fk attempts to solve.

Installation

The easiest way to install the package is by using:

pip install django-multi-fk

Once installed, simply add multi_fk to INSTALLED_APPS in settings.py:

INSTALLED_APPS = [
    #...
    'multi_fk',
]

How It Works

The app uses some clever monkey-patching to modify the behavior of the admin site. There are two changes made:

  • a data-model HTML5 attribute is added to <select> elements on the page to indicate which model is being displayed
  • JavaScript on the page updates the <select> elements belonging to the same model when one is changed

About

Automatically update multiple foreign keys in the Django admin

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 58.7%
  • JavaScript 41.3%