2013-07-31 2 views
0
@login_required 
def searchProduct(request): 
    """ 
    to search a particular product with name 
    """ 
    search_terms ='' 
    if request.GET['search_term']: 
     search_terms = request.GET.get('search_term') 
     if search_terms: 
      products = models.Product.objects.filter(product_name__icontains=search_terms) 
      for product in products: 
       kitchenstyle = KicthenStyleMapping.objects.filter(product= product)    
       print kitchenstyle 

      return render_to_response('admin/product/searchListProduct.html',{'search_terms': search_terms,'products' : products }, context_instance=RequestContext(request)) 
    return HttpResponseRedirect('/') 

class KicthenStyleMapping(models.Model): 
    style_mapping_id = models.AutoField(primary_key=True) 
    style = models.ForeignKey(KitchenStyle) 
    product = models.ForeignKey(Product) 
    class Meta: 
     db_table = 'kicthen_style_mapping' 

    class KitchenStyle(models.Model): 
    id = models.AutoField(primary_key=True) 
    style_name = models.CharField(max_length=248L, blank=True) 
    description = models.TextField(blank=True) 
    estimated_time = models.CharField(max_length=100L, blank=True) 
    status = models.CharField(max_length=10L) 
    class Meta: 
     db_table = 'kitchen_style' 

    class Product(models.Model): 
    id = models.AutoField(primary_key=True) 
    cabinet = models.CharField(max_length=100L, blank=True) 
    material = models.ForeignKey(Materials) 
    category = models.ForeignKey(Category, null=True, blank=True) 
    sub_category = models.ForeignKey(SubCategory, null=True, blank=True) 
    product_name = models.CharField(max_length=135, blank=True) 
    product_code = models.CharField(max_length=135, blank=True) 
    short_description = models.TextField(blank=True) 
    descriptions = models.TextField(blank=True) 
    product_price = models.FloatField(null=True, blank=True) 
    min_height = models.FloatField(null=True, blank=True) 
    max_height = models.FloatField(null=True, blank=True) 
    height_scale = models.FloatField(null=True, blank=True) 
    min_width = models.FloatField(null=True, blank=True) 
    max_width = models.FloatField(null=True, blank=True) 
    width_scale = models.FloatField(null=True, blank=True) 
    min_depth = models.FloatField(null=True, blank=True) 
    max_depth = models.FloatField(null=True, blank=True) 
    depth_scale = models.FloatField(null=True, blank=True) 
    is_hinges = models.CharField(max_length=12) 
    image = models.CharField(max_length=135, blank=True) 
    is_door = models.CharField(max_length=12, blank=True) 
    discount = models.FloatField(null=True, blank=True) 
    is_drawer = models.CharField(max_length=12) 
    video_url = models.CharField(max_length=200L, blank=True) 
    is_custom = models.CharField(max_length=4L) 

    class Meta: 
     db_table = u'product' 

Je suis un nouveau bie dans django. Je n'utilise pas la recherche django ou d'autres modules de recherche intégrés. ici dans la fonction de produit de recherche je ne peux pas filtrer le modèle kitchenstylemapping avec le champ de produit comme clé étrangère. toute aide appréciéeFonction de recherche django, les modèles ne fonctionnent pas

+1

Que se passe-t-il lorsque vous essayez? –

+0

C'est ici que vous commencez le débogage. Quels objets obtenez-vous dans votre variable "produits"? Vérifiez votre contribution, sont-ils ce que vous pensez qu'ils sont? Essayez d'exécuter des parties plus petites de votre code et vous verrez où les choses vont mal. – dutt

+0

mes entrées sont des mots simples qui sont pour rechercher des produits. J'ai eu le travail – user2504939

Répondre

0

Ce lien: Django Query Set API est votre nouveau meilleur ami. Django est livré avec une documentation fantastique et vous devriez en tirer pleinement parti. E.g Le double trait de soulignement dans le filtre signifie que Django peut rechercher des clés étrangères; c'est puissant, mais pas très joli.

La façon la plus simple que j'ai trouvé des requêtes d'écriture est d'ouvrir un shell:

python manage.py shell 
from (your model file) myapp.models import * 

KitchenStyle.objects.filter(style_set__product_name__icontains=searchterms) 

et apprendre votre chemin autour de la syntaxe du filtre.

Utilisez des choses comme dir(your_object) pour vous faire une idée du type de champs qu'il a et peut être interrogé, ils n'auront pas tous de sens tout de suite, mais c'est un bon point de départ.

Espérons que ça aide.

Questions connexes