Django:1.10
Abschließend wurde es unten aufgeführt.
QuerySet API reference | Django documentation | Django https://docs.djangoproject.com/ja/1.10/ref/models/querysets/#in
Bei Fragen sollten Sie sich diese Seite ansehen.
Um beispielsweise eine Abfrage zu generieren, um eine Liste der veröffentlichten Bücher des ausgewählten Autors zu erhalten, schreiben Sie:
views.py
def search(request):
form = SearchForm(request.POST)
books = None
if form.is_valid():
books = Book.objects.filter(author_id__in = form.cleaned_data['author'])
return render(request, 'books/search.html', {'form': form, 'books': books})
Autor, Buch, Genre-Modell.
models.py
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class Genre(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class Book(models.Model):
name = models.CharField(max_length=512)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
genres = models.ManyToManyField(Genre)
def __str__(self):
return self.name
Ein Formular zur Auswahl eines Autors.
forms.py
from django import forms
from books.models import Author
class SearchForm(forms.Form):
authors = [(author.id, author.name) for author in Author.objects.all()]
author = forms.MultipleChoiceField(label='Autor', widget=forms.CheckboxSelectMultiple,
choices=authors, required=False)
Wenn die Vorlage wie folgt lautet:
searth.html
<form method="post" action="">
{% csrf_token %}
<h1>{{ form.author.label }}</h1>
{{ form.author }}
<input type="submit" value="Suche" />
<hr />
<table border="1">
<tr>
<th>Titel</th>
<th>Autor</th>
<th>Genre</th>
</tr>
{% for b in books %}
<tr>
<td>{{ b.name }}</td>
<td>{{ b.author.name }}</td>
<td>{% for g in b.genres.all %}{{ g.name }}{% endfor %}</td>
</tr>
{% endfor %}
</table>
</form>
Es wird so angezeigt.
Ich habe die Hinzufügung von Autoren implementiert, aber ein Problem ist aufgetreten. Ich erhalte Autoren aus der Tabelle, um Autoren in forms.py oben auszuwählen, aber diese Methode scheint Anwendungsbereich zu sein, und selbst wenn ich Autoren hinzufüge, wird sie nicht auf dem Bildschirm angezeigt, es sei denn, der Server wird neu gestartet. Ich werde separat überlegen, was zu tun ist, wenn Transaktionsdaten Auswahlmöglichkeiten zugewiesen werden.
Das obige Problem wurde gelöst.
Auswahlmöglichkeiten im Multiple-Choice-Feld von Django nicht aktualisiert http://qiita.com/nakkun/items/26598a7bf1f80b215ff2
Vielleicht sollte das in Ordnung sein. .. ..
Recommended Posts