python - Django AutoComplete Light 不适用于 OneToOne 字段
问题描述
我正在尝试使用django-autocomplete-light在 Django 管理员中为OneToOneField添加自动完成功能。该字段在 Django Rest Framework 的auth_token 模型中可用。
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)
模型.py
from rest_framework.authtoken.models import Token
class CustomAuthTokenModel(Token):
search_fields = ['user', ]
def __str__(self):
return str(self.user)
视图.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
管理员.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)
表格.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。
解决方案
推荐阅读
- c - 获取当前线程的起始地址
- r - 将 data.frame 与 SpatialPolygonsDataFrame 合并以进行公寓分类
- npm - Vue modules, moment-timezone - 如何正确加载 moment-timezone 以及如何使用 2012-2022 数据
- python - 为什么 python list.remove 返回不同的结果
- java - 如何告诉 Java Invocation Api 使用哪个 java vm?
- android - 根据项目计数android创建一个cardview列表
- matlab - 为什么 MATLAB 会自动将变量转换为矩阵?
- python - 仅使用 bs4 和请求获取原始链接
- python - Python3:您是否应该在 requirements.txt 中包含您不一定在项目中使用的依赖项?
- html - 即使应用正确的代码,最大宽度也不起作用。