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' 

Я новый bie в django. Я не использую поиск django или любые другие встроенные модули поиска. здесь, в функции поиска продукта i can not filter the kitchenstylemapping model с полем продукта как внешний ключ. любая помощь оцененафункция поиска django, модели не работают

+1

Что происходит, когда вы пытаетесь? –

+0

Здесь вы начинаете отладку. Какие объекты вы попадаете в свою «товарную» переменную? Проверьте свои данные, они так, как вы думаете? Попробуйте использовать только небольшие части вашего кода, и вы обнаружите, что все пошло не так. – dutt

+0

Мои входы - это простые слова, которые предназначены для поиска продуктов. я получил его работу – user2504939

ответ

0

Эта ссылка: Django Query Set API - ваш новый лучший друг.

Django поставляется с фантастической документацией, и вы должны в полной мере использовать его. Например, двойное подчеркивание в фильтре означает, что Django может искать внешние ключи; это мощный, но не очень красивый.

Самый простой способ я нашел написания запросов, чтобы открыть оболочку:

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

KitchenStyle.objects.filter(style_set__product_name__icontains=searchterms) 

, а затем узнать свой путь вокруг синтаксиса фильтра.

Используйте такие вещи, как dir(your_object), чтобы получить представление о том, какие поля у него есть и могут быть запрошены, они не будут иметь никакого смысла сразу, но это хорошее место для начала.

Надеюсь, что это поможет.

Смежные вопросы