Как я могу предоставить пользователям возможность добавлять результаты поиска одним нажатием кнопки в модель базы данных в Django? - PullRequest
0 голосов
/ 29 мая 2020

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

```def search(request):
try:
    q = request.GET.get('q')
except:
    q = None
if q:
    Players = Player.objects.filter(First_Name__icontains=q)
    context = {'query': q,
               'Players': Players}
    template = 'home/results.html'
else:
    template = 'home/index.html'
    context = {}
return render(request,template,context)```

Представление поиска показывает перенаправления пользователей на home / results. html где отображаются результаты. Я хотел бы, чтобы пользователи могли нажимать кнопку рядом с каждым из результатов и добавлять этого игрока в базу данных избранного. Я попытался использовать Django ModelForms в forms.py следующим образом:

   from django import forms
   from .models import favoritePlayer

   class favoritePlayerForm(forms.ModelForm):
   class Meta:
      model = favoritePlayer
      fields = ['First_Name',]

Вот функция просмотра, которую я написал, чтобы добавить игрока в базу данных избранного:

def favorite_create_view (request):
form = favoritePlayerForm(request.POST or None)
if form.is_valid():
    form.save()
context = {'form':form}
template = 'home/results.html'
return render(request,template,context)

Наконец, ниже находится файл results.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <h1>Searched for {{ query }}</h1>
  {% for Player in Players %}
  <form method="POST"> {% csrf_token %}
  <a href = "/{{ Player.id }}/">{{ Player.First_Name}}</a>
      {{ form.as_p }}
      <input type="submit" value="Save" />
  </form>
 {% endfor %}
</body>
</html>

Я не могу заставить это работать. Я бы предпочел не использовать AJAX или Javascript. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 29 мая 2020
def search(request):
    query = request.GET.get('q', None)
    user = None   #if no 
    if request.user.is_authenticated:
        user = request.user
    context =  {"query": query}
    if query is not None:
       Player.objects.create(user=user, query=query)
       Players = Player.objects.search(query=query)

        context['Players '] = Players 
    return render(request, 'home/index.html',context)
...