diff --git a/wish/settings.py b/wish/settings.py index 6f69684..b60f325 100644 --- a/wish/settings.py +++ b/wish/settings.py @@ -38,6 +38,9 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', + 'dal', + 'dal_select2', + 'utils', 'wishlist', ] diff --git a/wishlist/admin.py b/wishlist/admin.py index 36b7ff2..85fe77a 100644 --- a/wishlist/admin.py +++ b/wishlist/admin.py @@ -4,10 +4,16 @@ import wishlist.models as m admin.site.register(m.WishList) from django.forms import ModelForm +from dal import autocomplete class WishedItemAdminForm(ModelForm): class Meta: model = m.WishedItem fields = '__all__' + widgets = { + 'wishlists': autocomplete.ModelSelect2Multiple( + url='wishlist_list_autocomplete', + ), + } @admin.register(m.WishedItem) class WishedItemAdmin(admin.ModelAdmin): diff --git a/wishlist/urls.py b/wishlist/urls.py index 6c1622b..7224896 100644 --- a/wishlist/urls.py +++ b/wishlist/urls.py @@ -1,8 +1,10 @@ from django.urls import path from . import views as v +from . import views_autocomplete as ac urlpatterns = [ path('user/', v.UserWishLists.as_view(), name='wishlists_user'), path('item/', v.WishedItemView.as_view(), name='wished_item'), path('', v.WishListView.as_view(), name='wishlist'), + path('autocomplete/wishlists', ac.WishListAutocomplete.as_view(), name='wishlist_list_autocomplete'), ] diff --git a/wishlist/views_autocomplete.py b/wishlist/views_autocomplete.py new file mode 100644 index 0000000..7bc080a --- /dev/null +++ b/wishlist/views_autocomplete.py @@ -0,0 +1,14 @@ +from dal import autocomplete +from wishlist.models import WishList + +class WishListAutocomplete(autocomplete.Select2QuerySetView): + def get_queryset(self): + if not self.request.user.is_authenticated: + return WishList.objects.none() + qs = WishList.objects.all().filter(owner=self.request.user) + + if self.q: + qs = qs.filter(name__startswith=self.q) + + return qs +