Vous devriez jeter un oeil à la documentation et essayer de le lire lentement. Si vous donnez plus de détails sur ce qui ne fonctionne pas pour vous, nous pourrions peut-être mieux vous aider. En général, voici ce qui est nécessaire:
Dans votre views.py fichier ajouter
from django.contrib.auth.models import User
from dal import autocomplete
from your_countries_app.models import Country
class ClientAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
# Don't forget to filter out results depending on the visitor !
if not self.request.user.is_authenticated():
return User.objects.none()
qs = User.objects.all()
if self.q:
qs = qs.filter(name__istartswith=self.q)
return qs
Puis dans votre urls.py add fichier:
from your_countries_app.views import ClientAutocomplete
urlpatterns = [
url(
r'^client-autocomplete/$',
ClientAutocomplete.as_view(),
name='client-autocomplete',
),
]
Sautons pour une seconde la partie avec le shell de la documentation, si cela vous déroute. Alors maintenant, vous devriez être en mesure d'aller à cette adresse depuis votre navigateur.
localhost: 8000/client-autocomplete/
Vous devriez être en mesure de voir tous les utilisateurs sous forme de texte, il (ce format est appelé JSON, vous pouvez regarder vers le haut, si vous voulez, mais nous ne traitera pas avec). Si vous avez créé une autre application pour les commandes, et que vous travaillez dans un autre dossier, juste essayer d'appeler l'URL avec les commandes comme préfixe à la place:
localhost: 8000/commandes/client-autocomplete/
Je suppose que vous êtes familiarisé avec les formes de Django, sinon take a look here. dans votre forms.py ajouter ceci:
from dal import autocomplete
from django.contrib.auth.models import
from django import forms
class OrderForm(forms.ModelForm):
client = forms.ModelChoiceField(
queryset=User.objects.all(),
widget=autocomplete.ModelSelect2(url='cllient-autocomplete')
# if you are working in an orders application, and you have defined the the url
#in the orders/urls.py then call this method like this:
#widget=autocomplete.ModelSelect2(url='orders:cllient-autocomplete')
)
class Meta:
model = Order
fields = ('__all__')
Je suppose que vous voulez que la saisie semi-automatique fonctionne en dehors des vues du panneau d'administration, vous devez donc ajouter le code ci-dessous à votre modèle pour la vue des commandes. Veuillez noter que vous devriez avoir dans votre base.html le {% block content%} et le {% block footer%} définis:
{% extends 'base.html' %}
{# Don't forget that one ! #}
{% load static %}
{% block content %}
<div>
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" />
</form>
</div>
{% endblock %}
{% block footer %}
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script>
{{ form.media }}
{% endblock %}