在 Django 中自动完成,如果找不到则允许创建用户

Autocomplete in django and allow creating user if not found

我正在尝试为网页上的用户添加一个搜索框以查看他的个人资料,如果该用户不存在,那么我可以选择创建它。

在flask中,我使用了一个解决方案,自动完成使用jquery,当没有找到时,它会简单地将"Create_user"作为表单中提交的文本,然后重定向到 url 用于创建用户。我无法将其移植到 django(javascript 不是我的强项,我正在启动 django。)

所以我尝试了 django-autocomplete-light,但是当自动完成工作时,我发现没有办法复制将我重定向到用户创建页面的行为,以防找不到任何人。 (文档中的创建示例只允许创建一个简单的条目,而我需要基于模型创建一个用户)

关于如何使用 django 完成此操作的任何线索?

这就是我几天前在看的东西,我找到了这个

自动完成的示例管理代码

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from django import forms

from selectable.forms import AutoCompleteSelectField, AutoCompleteSelectMultipleWidget

from .models import Fruit, Farm
from .lookups import FruitLookup, OwnerLookup


class FarmAdminForm(forms.ModelForm):
    owner = AutoCompleteSelectField(lookup_class=OwnerLookup, allow_new=True)

    class Meta(object):
        model = Farm
        widgets = {
            'fruit': AutoCompleteSelectMultipleWidget(lookup_class=FruitLookup),
        }
        exclude = ('owner', )

    def __init__(self, *args, **kwargs):
        super(FarmAdminForm, self).__init__(*args, **kwargs)
        if self.instance and self.instance.pk and self.instance.owner:
            self.initial['owner'] = self.instance.owner.pk

    def save(self, *args, **kwargs):
        owner = self.cleaned_data['owner']
        if owner and not owner.pk:
            owner = User.objects.create_user(username=owner.username, email='')
        self.instance.owner = owner
        return super(FarmAdminForm, self).save(*args, **kwargs)


class FarmAdmin(admin.ModelAdmin):
    form = FarmAdminForm


admin.site.register(Farm, FarmAdmin)

源代码

https://github.com/mlavin/django-selectable

文档

http://django-selectable.readthedocs.org/en/latest/

希望这对你也有帮助