diff --git a/python3_sample_project/app/admin.py b/python3_sample_project/app/admin.py index 25783b3..f60797d 100644 --- a/python3_sample_project/app/admin.py +++ b/python3_sample_project/app/admin.py @@ -1,10 +1,11 @@ from django.contrib import admin from adminsortable.admin import (SortableAdmin, SortableTabularInline, - SortableStackedInline, SortableGenericStackedInline) + SortableStackedInline, SortableGenericStackedInline, + NonSortableParentAdmin) from adminsortable.utils import get_is_sortable from app.models import (Category, Widget, Project, Credit, Note, GenericNote, - Component, Person) + Component, Person, NonSortableCategory, SortableCategoryWidget) admin.site.register(Category, SortableAdmin) @@ -65,3 +66,14 @@ class PersonAdmin(SortableAdmin): list_display = ['__str__', 'is_board_member'] admin.site.register(Person, PersonAdmin) + + +class SortableCategoryWidgetInline(SortableStackedInline): + model = SortableCategoryWidget + extra = 0 + + +class NonSortableCategoryAdmin(NonSortableParentAdmin): + inlines = [SortableCategoryWidgetInline] + +admin.site.register(NonSortableCategory, NonSortableCategoryAdmin) diff --git a/python3_sample_project/app/migrations/0002_nonsortablecategory_sortablecategorywidget.py b/python3_sample_project/app/migrations/0002_nonsortablecategory_sortablecategorywidget.py new file mode 100644 index 0000000..53db365 --- /dev/null +++ b/python3_sample_project/app/migrations/0002_nonsortablecategory_sortablecategorywidget.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +import adminsortable.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='NonSortableCategory', + fields=[ + ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)), + ('title', models.CharField(max_length=50)), + ], + options={ + 'verbose_name': 'Non-Sortable Category', + 'verbose_name_plural': 'Non-Sortable Categories', + 'abstract': False, + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='SortableCategoryWidget', + fields=[ + ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)), + ('order', models.PositiveIntegerField(db_index=True, editable=False, default=1)), + ('title', models.CharField(max_length=50)), + ('non_sortable_category', adminsortable.fields.SortableForeignKey(to='app.NonSortableCategory')), + ], + options={ + 'ordering': ['order'], + 'verbose_name': 'Sortable Category Widget', + 'abstract': False, + 'verbose_name_plural': 'Sortable Category Widgets', + }, + bases=(models.Model,), + ), + ] diff --git a/python3_sample_project/app/models.py b/python3_sample_project/app/models.py index 9fe5a0b..a0b72bc 100644 --- a/python3_sample_project/app/models.py +++ b/python3_sample_project/app/models.py @@ -119,3 +119,23 @@ class Person(Sortable): def __str__(self): return '{0} {1}'.format(self.first_name, self.last_name) + + +class NonSortableCategory(SimpleModel): + class Meta(SimpleModel.Meta): + verbose_name = 'Non-Sortable Category' + verbose_name_plural = 'Non-Sortable Categories' + + def __str__(self): + return self.title + + +class SortableCategoryWidget(SimpleModel, Sortable): + class Meta(Sortable.Meta): + verbose_name = 'Sortable Category Widget' + verbose_name_plural = 'Sortable Category Widgets' + + non_sortable_category = SortableForeignKey(NonSortableCategory) + + def __str__(self): + return self.title diff --git a/python3_sample_project/database/python3-test-project.sqlite3 b/python3_sample_project/database/python3-test-project.sqlite3 index 76b853c..7435915 100644 Binary files a/python3_sample_project/database/python3-test-project.sqlite3 and b/python3_sample_project/database/python3-test-project.sqlite3 differ