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.
- Python 2.7+ or Python 3.3+
- Django 1.11+
Install django-mflf
using pip:
pip install django-mflf
Add model_field_list
to INSTALLED_APPS
. Example:
INSTALLED_APPS = (
...
'model_field_list',
...
)
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))
- 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.