Skip to content

andreynovikov/django-mflf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django model field list field

Build Status GitHub release PyPI release Python version GitHub issues Codacy grade Codacy coverage GitHub license

This is a Django model field that provides a list of some other model's fields. Fields can be multi-selected and "under the hood" are stored as a comma-separated string. Also package provides simple form field with the same capabilities.

Requirements

  • Python 2.7+ or Python 3.3+
  • Django 1.11+

Installation

Install django-mflf using pip:

pip install django-mflf

Add model_field_list to INSTALLED_APPS. Example:

INSTALLED_APPS = (
    ...
    'model_field_list',
    ...
)

Example usage

Model field:

from model_field_list import ModelFieldListField

class ProductKind(models.Model):
    name = models.CharField(max_length=100)
    comparison = ModelFieldListField('comparison criteria', source_model=Product)

If referenced model has many fields it would be useful to use FilteredSelectMultiple in Django admin:

from django.contrib.admin.widgets import FilteredSelectMultiple

class ProductKindAdminForm(forms.ModelForm):
    class Meta:
        widgets = {
            # different widget label is intentional
            'comparison': FilteredSelectMultiple('product properties', False)
        }

Simple form field:

from django.contrib.admin.widgets import FilteredSelectMultiple
from model_field_list import ModelFieldListFormField

class ProductExportForm(ExportForm):
    export_fields = ModelFieldListFormField(source_model=Product, label='Export fields',
                                            widget=FilteredSelectMultiple('свойства товара', False))

Limitations

  • All model fields are listed, no option to filter them in any way.
  • Field order can't be customized - they are sorted by the order of their definition in a model.