2016-01-01 3 views
3

Во-первых, я должен сказать, что это мое первое приложение в Django. Поэтому мои знания все еще ограничены.Поле поиска в Django Python

У меня есть эта домашняя страница, где отображаются все данные в моей модели. Название модели - «Asset».

Я пытаюсь найти поле поиска на домашней странице.

models.py

class Asset(models.Model): 
    asset_desc = models.CharField(max_length=120, null=False) 
    BEIRUT = 'Beirut' 
    SAIDA = 'Saida' 
    HALBA = "Halba" 
    base_choice = ((SAIDA, "Saida"), (BEIRUT, "Beirut"), (HALBA, "Halba")) 
    asset_base = models.CharField(max_length=120, null=False, choices=base_choice) 
    created_date = models.DateField(auto_now_add=True) 
    update_date = models.DateTimeField(auto_now=True) 
    asset_user = models.CharField(max_length=120, blank=True) 
    slug = models.SlugField() 

    def save(self, *args, **kwargs): 
     self.slug = slugify(self.asset_desc) 
     super(Asset, self).save(*args, **kwargs) 

    def __str__(self): 
     return self.asset_desc 

views.py

def search_asset(request): 
    if 'q' in request.GET and request.GET['q']: 
     q = request.GET['q'] 
    assets = Asset.objects.filter(asset_desc__icontains=q) 
    context = {'desc': assets} 
    return render(request, 'home.html', context) 

HTML для поля поиска:

<form method="GET" class="navbar-form navbar-right"> 
     <input type="text" class="form-control" placeholder="Search..."id="search_box" name="q"> 

urls.py

url(r'^search/$', "asset.views.search_asset", name="home") 

Пожалуйста, помогите, почему он не показывает результат. Я использую Django 1.9.

+0

Что ваш шаблон для показа Результаты? Что передается как 'q' для тестирования? – kia

+0

так в чем проблема? где вы застряли? – karthikr

+0

Нет ничего очевидного, глядя на ваш код. Вам нужно сделать некоторую работу, чтобы показать нам более подробную информацию. 1. Проверьте свои виды.py, распечатав или используя 'pdb', чтобы узнать, действительно ли значение' q' имеет значение. 2. Используйте тот же метод, чтобы выяснить, пуст ли «активы». 3. Вам нужно обновить свой вопрос, чтобы показать свой код, как вы визуализируете результат. –

ответ

1

некоторых коррективов:

Вам не нужно null=False для TextField() и CharField(), так как они никогда не экономят Null в базу данных, но пустая строку. поэтому вы можете удалить null=False

Адрес поискового URL-адреса home, который логически не соответствует действительности. оно должно быть изменено на search или search_view, а затем вы можете обратиться к нему через url тег:

action="{% url 'search' %}" 

это полезно, если кто-то должен смотреть через код. «читабельности рассчитывает»;)

и, наконец, поставить это на ваш home.html (на самом деле вы должны уже есть)

{% for asset in desc %} 
    <div> 
     {{ asset.asset_desc }} <br> 
     {{ asset.base_choice }} <br> 
     {{ asset.asset_user }} 
    </div> 
{% endfor %} 

Я надеюсь, что это помогает

+0

Благодарим за помощь. Мне не хватало действия и исправления URL, которые вы предоставили. Теперь это сработало. –

1

Вы не указали шаблон или часть HTML, в которой перечислены результаты. Вы должны рассмотреть имя вас контекстной переменной, но после вашего имени, вы должны перечислить результаты, как это:

{% for asset in desc %} 
    <div> 
    {{ asset }} 
    </div> 
{% endfor %} 

Все остальное выглядит правильно.

Надеется, что это помогает

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