Django AutoComplete Light не работает с полем OneToOne - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь добавить автозаполнение для OneToOneField в администраторе Django, используя django-autocomplete-light . Это поле доступно в auth_token модели Django Rest Framework .

class Token(models.Model):
    """
    The default authorization token model.
    """
    key = models.CharField(_("Key"), max_length=40, primary_key=True)
    user = models.OneToOneField(
        settings.AUTH_USER_MODEL, related_name='auth_token',
        on_delete=models.CASCADE, verbose_name=_("User")
    )
    created = models.DateTimeField(_("Created"), auto_now_add=True)

models.py

from rest_framework.authtoken.models import Token


class CustomAuthTokenModel(Token):
    search_fields = ['user', ]

    def __str__(self):
        return str(self.user)

views.py

from dal import autocomplete
from rest_framework.authtoken.models import Token


class AuthUserAutocompleteView(autocomplete.Select2QuerySetView):
    def get_queryset(self):

        qs = Token.objects.all().order_by('user__username')

        if self.q:
            qs = qs.filter(user__username__icontains=self.q)

        return qs

admin.py

from django.contrib import admin

from rest_framework.authtoken.models import Token
from rest_framework.authtoken.admin import TokenAdmin
from .forms import AuthUserForm


class CustomTokenAdmin(TokenAdmin):
    form = AuthUserForm


admin.site.unregister(Token)
admin.site.register(Token, CustomTokenAdmin)

forms.py

from dal import autocomplete
from .models import CustomAuthTokenModel


class AuthUserForm(autocomplete.FutureModelForm):
    class Meta:
        model = CustomAuthTokenModel
        fields = ('user', )
        search_fields = ['user__username']
        widgets = {
            'user': autocomplete.ModelSelect2(url='autocomplete_auth_user')
        }

И в файле urls.py у меня есть:

url('^autocomplete_auth_user/$', AuthUserAutocompleteView.as_view(), name='autocomplete_auth_user')

Я почти уверен, что мне что-то не хватает, потому что я не вижу имена пользователей при вводе формы в админ-панели для токена авторизации. Дайте мне знать, что мне не хватает. Я использую Django 1.11 и django-autocomplete light 3.2.10.

...