2012-04-19 18 views
15

¿Alguien puede publicar el ejemplo más simple posible para django-ajax-selects? Solo un modelo con un campo y un formulario que se puede usar para seleccionar instancias de este modelo basadas en ese campo (no en el administrador sino en un formulario de usuario).django-ajax-selecciona el uso de ejemplo

Intenté leer la documentación del proyecto, pero me resultó muy difícil de entender ... Además, no pude hacer que la aplicación de ejemplo funcionara (¿no podría encontrar una etiqueta?) :(

Además, si usted cree que hay una solución más fácil que django-ajax-selecciona por favor dígame.

Gracias!

+1

"se desvivían por descubrir qué es una etiqueta ???" +1 Acepto que la documentación de ajax selecciona no está clara para los novatos ajax. También me pregunto qué etiqueta es ... – Private

Respuesta

7

Aquí es un ejemplo sencillo (a partir del ejemplo en github pero no probado):

models.py:

class Person(models.Model): 
    name = models.CharField(blank=True, max_length=100) 
    email = models.EmailField() 

    def __unicode__(self): 
     return self.name 


class Group(models.Model): 
    name = models.CharField(max_length=200,unique=True) 
    members = models.ManyToManyField(Person,blank=True,help_text="Enter text to search for and add each member of the group.") 

    def __unicode__(self): 
     return self.name 

forms.py:

class GroupForm(ModelForm): 

    class Meta: 
     model = Group 

    members = make_ajax_field(Release,'members','person') 

lookups.py:

class PersonLookup(LookupChannel): 

    model = Person 

    def get_query(self,q,request): 
     return Person.objects.filter(name__icontains=q).order_by('name') 

    def get_result(self,obj): 
     return obj.name 

    def format_match(self,obj): 
     return self.format_item_display(obj) 

    def format_item_display(self,obj): 
     return u"%s" % escape(obj.name) 

settings.py:

AJAX_LOOKUP_CHANNELS = { 
    'person' : ('example.lookups', 'PersonLookup'), 
} 

views.py:

class Create(generic.CreateView): 
    template_name = "create.html" 
    form_class = GroupForm 
    success_url = 'create' 

create = Create.as_view() 

urls.py:

urlpatterns = patterns('', 
    url(r'^create', view='views.create',name='create'), 
    url(r'^ajax_lookup/(?P<channel>[-\w]+)$', 'ajax_select.views.ajax_lookup', name = 'ajax_lookup'), 
) 
+0

¿Podría subir esto como un proyecto completo de django en github o bitbucket? Me gustaría clonar el proyecto y ejecutar "python manage.py runserver" para ver cómo funciona ... ¡Gracias! – Serafeim

+0

¿Alguien ha probado esto? No puedo hacerlo funcionar. – thumbtackthief

+0

Aquí hay un ejemplo de trabajo.https: //github.com/serkanh/django_ajax_selects_example – shaytac

0

hay que ir a través de la guía Quick installation para empezar.

Una etiqueta en este docume ntation es un modelo de ejemplo, al igual que podría ser Car, Widget, cualquier modelo que tengas y quieras.

+2

Lo intenté pero no pude entender :(¿Por qué se usa la etiqueta? Veo que en el AJAX_LOOKUP_CHANNELS se usa una 'persona'. ¿Por qué hay modelos de personas y etiquetas? me gusta usar solo autocompletar para personas que no sean para etiquetas. ¿Cómo podría poner el autocompletado en uno de mis formularios? Y también, ¿por qué debería registrar algo bajo el administrador si no quiero usar la funcionalidad de autocompletar en el administrador? ? – Serafeim

+0

Por qué se usa Label? Como ejemplo. Obviamente, no tiene que registrar nada en el administrador si no desea autocompletar en el administrador ... – jpic

+0

No puedo estar en la mente del autor de la documentación :(! Si tiene un ejemplo completo de trabajo simple, por favor publíquelo, gracias. – Serafeim

Cuestiones relacionadas