У меня есть 2 таблицы / модели, которые для всех практических целей совпадают со стандартным примером Автор / Книга, но с дополнительным ограничением, что в моем приложении каждый Автор может написать только 0 или 1 книгу. (Например, поле ForeignKey в модели Book является или может быть OneToOneField, и могут быть авторы, у которых нет соответствующей книги в таблице Book.)
Я хотел бы иметь возможность отображать форму, показывающую несколько книг, а также отображать некоторые поля из соответствующей таблицы Author (например, имя_пользователя, адрес_пользователя). Я последовал примеру inlineformset , но он даже не отображает имя автора в сгенерированной форме.
РЕДАКТИРОВАТЬ --- Добавлен пример кода
# Models
class Author(models.Model):
name = models.CharField(max_length=100)
address = models.CharField(max_length=100)
class Book(models.Model):
author = models.OneToOneField(Author)
title = models.CharField(max_length=100)
# views
def manage_books(request):
author = Author.objects.get(pk=1)
BookInlineFormSet = inlineformset_factory(Author, Book)
formset = BookInlineFormSet(instance=author)
return render_to_response("manage_books.html", {
"formset": formset,
})
# template
<table>
<tr>
<th>Author</th>
<th>Address</th>
<th>Title</th>
</tr>
{% for form in formset.forms %}
<tr>
<td>{{ form.author }}</td>
<td>{{ form.author_address }}</td>
<td>{{ form.title }}</td>
</tr>
{% endfor %}
</table>
Вывод пуст для Автора и Адреса_адреса
Примечание. Я могу заставить автора напечатать, если я определю в модели функцию unicode , но это не решает общую проблему. Также обратите внимание, что form.author.address тоже не работает.