Отображение / редактирование полей в таблицах в форме Django - PullRequest
0 голосов
/ 22 мая 2010

У меня есть 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 тоже не работает.

1 Ответ

0 голосов
/ 22 мая 2010

Я новичок в Django, но я думаю это то, что вы ищете.

Попробуйте добавить null = True к вашему OneToOneField. например:

book = model.OneToOneField(Book, null=True)

Что касается второй части, вам нужны встроенные формы. Я бы предположил, что где-то есть ошибка в вашей форме или, что более вероятно, в вашем шаблоне. Вы добавили (например):

{{ author_formset.as_p }}

в вашем шаблоне в {{form.as_p}}?

Если проблема не в этом, вам может потребоваться опубликовать соответствующий шаблон, представление, модель и код формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...