Django 'CharField' объект не имеет атрибута split - PullRequest
0 голосов
/ 30 октября 2019

Я создаю сайт, где пользователь может искать рецепты по своим ингредиентам. Я хотел бы, чтобы когда пользователь наконец увидел рецепт, ингредиенты там были бы разделены знаком «,». а пока это просто космос. Я пытался сделать это в моей модели, но они получают ошибку, как в заголовке - у объекта 'CharField' нет атрибута split.

Модели:

from django.db import models


class Ingredient(models.Model):

  ingredient_name = models.CharField(max_length=250)
  igredient_name1 = ingredient_name.split(', ')


  def __str__(self):
    return self.ingredient_name1



class Recipe(models.Model):

  recipe_name = models.CharField(max_length=250)
  preparation = models.CharField(max_length=1000)
  ingredients = models.ManyToManyField(Ingredient)

  def __str__(self):
    return self.recipe_name

шаблон:

<div>
    <h1><a href="/">Drink drank drunk</a></h1>
</div>


{% for drink in results %}
  <div>
    <p>{{ drink.recipe_name }}</p>
    <p>Preparation: {{ drink.preparation }}</p>
    <p>Ingredients:
    {% for ingredient in drink.ingredients.all %}
      {{ingredient.ingredient_name}}
    {% endfor %}
    </p>
  </div>
{% endfor %}

просмотр:

def drink_list(request):
    template = "drinks/drink_list.html"
    return render(request, template)



def search_results(besos):

    query = besos.GET.get('q')
    q = Q()
    for queries in query.split(', '):
        q |= (Q(ingredients__ingredient_name__icontains=queries))
    results = Recipe.objects.filter(q)

    template = "drinks/search_results.html"
    context = {
        'results' : results,
    }
    return render(besos, template, context)

1 Ответ

0 голосов
/ 30 октября 2019

После некоторого беспорядка в понимании того, что необходимо сделать, кажется, что решение состоит в том, чтобы просто добавить нужную запятую в шаблон, изменив forloop следующим образом:

{% for ingredient in drink.ingredients.all %}} 
   {{ingredient.ingredient_name}}{% if not forloop.last %},{% endif %}
{% endfor %}
...