1

I am trying to use django-autocomplete-light 3.2.1 in my Django (1.10) project with python (3.5) and I found great difficulty in using it. Then I try to follow the live demo shown in the tutorial and pull down all file to my local drive for replication (like the one on http://dal-yourlabs.rhcloud.com/select2_outside_admin/), however in vain. To me, I want to make my local demo work so that I can work my own one based on this.

Specifically, when I follow the following codes and run the site, it shows the errors of NoReverseMatch at /select2_outside_admin/ with description of Reverse for 'linked_data' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] I have no idea what is going wrong. I attached my codes as below and please advise what to do if you know the solution. Many thanks:

settings.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'select2_outside_admin',
    # Autocomplete
    'dal',
    # Enable plugins
    'dal_select2',
    'dal_queryset_sequence',    
]

urls.py:

from django.conf.urls import url, include
from django.contrib import admin
from .views import UpdateView

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        # url(r'^select2_outside_admin/', include('select2_outside_admin.urls')),
        url(
                r'^select2_outside_admin/$',
                UpdateView.as_view(),
                name='select2_outside_admin',
            ),  
    ]

models.py:

from django.db import models
from django.utils.encoding import python_2_unicode_compatible

@python_2_unicode_compatible
class TModel(models.Model):
    name = models.CharField(max_length=200)

    test = models.ForeignKey(
        'self',
        null=True,
        blank=True,
        related_name='related_test_models'
    )

    owner = models.ForeignKey(
        'auth.user',
        null=True,
        blank=True,
        related_name='owned_linked_models',
    )

    for_inline = models.ForeignKey(
        'self',
        null=True,
        blank=True,
        related_name='inline_test_models'
    )

    def __str__(self):
        return self.name

forms.py:

from dal import autocomplete
from django import forms
from .models import TModel

class TForm(forms.ModelForm):
    def clean_test(self):
        owner = self.cleaned_data.get('owner', None)
        value = self.cleaned_data.get('test', None)

        if value and owner and value.owner != owner:
            raise forms.ValidationError('Wrong owner for test')

        return value

    class Meta:
        model = TModel
        fields = ('name', 'owner', 'test')
        widgets = {
            'test': autocomplete.ModelSelect2(url='linked_data',
                                              forward=('owner',))
        }

    class Media:
        js = (
            'linked_data.js',
        )

views.py:

from django.shortcuts import render
from django.core.urlresolvers import reverse_lazy
from django.views import generic

from select2_outside_admin.forms import TForm
from select2_outside_admin.models import TModel
# Create your views here.
class UpdateView(generic.UpdateView):
    model = TModel
    form_class = TForm
    template_name = 'select2_outside_admin.html'
    success_url = reverse_lazy('select2_outside_admin')

    def get_object(self):
        return TModel.objects.first()
CL. L
  • 237
  • 1
  • 7
  • 22

0 Answers0