def __str__(self):
return self.title
+class Person(models.Model):
+ name = models.CharField(max_length = 200)
+ def __str__(self):
+ return self.name
+
class Lease(models.Model):
book = models.ForeignKey(Book, on_delete=models.CASCADE)
- leasee = models.CharField(max_length = 200)
+ leasee = models.ForeignKey(Person, on_delete=models.CASCADE)
def __str__(self):
return "%s (%s)" % (self.book, self.leasee)
+
+<a href="{% url 'persons' %}">Personen</a>
+<div>
{% if book_list %}
<ul>
{% for book in book_list %}
<input type="text" name="title" />
<input type="submit" value="Neues Buch" />
</form>
+</div>
--- /dev/null
+<a href="{% url 'index' %}">Bücher</a>
+<div>
+{% if person_list %}
+ <ul>
+ {% for person in person_list %}
+ <li> {{person}}
+ <ul>
+ {% for lease in person.lease_set.all %}
+ <li><a href="{% url 'return_book' lease.id %}">{{ lease.book }}</a></li>
+ {% endfor %}
+ </ul>
+ </li>
+ {% endfor %}
+ </ul>
+{% else %}
+ Keine Personen eingetragen.
+{% endif %}
+</div>
url(r'^(?P<book_id>\d+)$', views.detail, name="detail"),
url(r'^(?P<book_id>\d+)/lease$', views.lease_book, name="lease_book"),
url(r'^lease/(?P<lease_id>\d+)/return$', views.return_book, name="return_book"),
+ url(r'^persons$', views.PersonIndexView.as_view(), name='persons')
]
from django.shortcuts import render
from django.core.urlresolvers import reverse
from django.http import HttpResponse, HttpResponseRedirect
+from django.views import generic
-from books.models import Book, Lease
+from books.models import Book, Lease, Person
def index(request):
try:
def lease_book(request, book_id):
book = Book.objects.get(pk = book_id)
try:
- leasee = request.POST['leasee']
+ leasee_name = request.POST['leasee']
+ leasee, new_person = Person.objects.get_or_create(name=leasee_name)
+ if new_person:
+ leasee.save()
lease = Lease(book = book, leasee = leasee)
lease.save()
return HttpResponseRedirect(reverse('index'))
except KeyError:
return render(request, 'books/lease.html', {'book': book})
+
+class PersonIndexView(generic.ListView):
+ template_name = 'books/persons.html'
+ context_object_name = 'person_list'
+
+ def get_queryset(self):
+ return Person.objects.order_by('name')[:10]