как сделать живую форму поиска ModelChoiceField - PullRequest
0 голосов
/ 06 апреля 2019

как сделать живой поиск в форме ModelChoiceField в шаблоне html ... я напишу, например, число, и я получу только те данные, которые имеют этот номер я использую django 1.9

models.py

class Suivre(models.Model):
formationffF=models.ForeignKey(FormationDispo,on_delete=models.CASCADE)
numcniF=models.ForeignKey(Personne,on_delete=models.CASCADE)
session = models.CharField(max_length=50)

form.py

class Ajout3 (forms.Form):
numcniF=forms.ModelChoiceField(queryset=Personne.objects.all().order_by('-time'))
formationf =forms.ModelChoiceField(queryset=FormationDispo.objects.all().order_by('time') )
session = forms.CharField(required=True, widget=forms.TextInput())

tamplate.html

<form method="post">
{% load crispy_forms_tags %}
{% csrf_token %}
{{con|crispy}}
<button type="submit" class="btn btn-success" > SAVE</button>
</form>

1 Ответ

0 голосов
/ 06 апреля 2019

Я бы предложил вам использовать django-admin и ajax_select

Создать файл с именем admin.py в вашем приложении.

admin.py

from django.contrib import admin
from myproject.myapp.models import Suivre
from ajax_select import make_ajax_form

# creates model-centric interface where trusted users can manage content on your site. 
class SuivreAdmin(admin.ModelAdmin):
    model = Suivre
    form = make_ajax_form(
        Suivre,
        {
            'numcniF': 'all_personne',  # ForeignKeyField
             'formationf':'all_formationdispo'
        })

# registers admin
admin.site.register(Suivre, SuivreAdmin)

Обратите внимание, что я использую библиотеку ajax_select , которая создаст интерфейс, показанный на рисунке ниже.ajax select

Установить ajax_select:

pip install django-ajax-selects

Добавить приложение:

settings.py

# settings.py
INSTALLED_APPS = (
    ...
    'ajax_select',  # <-   add the app
    ...
)
AJAX_LOOKUP_CHANNELS = {
    'all_formationdispo': {
        'model': 'app.FormationDispo',
        'search_field': 'name'
    },
    'all_personne': {
        'model': 'app. Personne',
        'search_field': 'name'
    },
  }

ВключитьURL в вашем проекте:

urls.py

# urls.py
from django.conf.urls import url, include
from django.conf.urls.static import static
from django.contrib import admin
from django.conf import settings
from ajax_select import urls as ajax_select_urls

admin.autodiscover()

urlpatterns = [

    # place it at whatever base url you like
    url(r'^ajax_select/', include(ajax_select_urls)),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...