Поля, сгенерированные inlineformset_factory, исчезают при сбое проверки - PullRequest
0 голосов
/ 08 августа 2010

У меня есть простое отношение Автор книги

class Author(models.Model):
    first_name = models.CharField(max_length=125)
    last_name = models.CharField(max_length=125)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

class Book(models.Model):
    title = models.CharField(max_length=225)
    author = models.ForeignKey(Author)

class AuthorForm(forms.ModelForm):
    class Meta:
        model = Author

class BookForm(forms.ModelForm):
    class Meta:
        model = Book

Это то, что я имею в виду

def addbook(request):

    BookFormSet = inlineformset_factory(models.Author, models.Book, extra=1)

    if request.method == 'GET':
        author = models.AuthorForm()
        books = BookFormSet()
    else:
        author = models.AuthorForm(request.POST)
        if author.is_valid():
            books = BookFormSet(request.POST)
            if books.is_valid():
                print(books)

    return render_to_response('bookadd.html', locals(), context_instance = RequestContext(request))

Мой шаблон выглядит так

<form action="/books/add_new" method="post">
      {% csrf_token %}
      <table>
        <tr>
          <td>First name: </td>
          <td>{{ author.first_name }}</td>
          <td>{{author.first_name.errors}}</td>
        </tr>
        <tr>
          <td>Last name</td>
          <td>{{ author.last_name }}</td>
          <td>{{author.last_name.errors}}</td>
        </tr>
      </table>
      {{ books.management_form }}
      {{ books.as_table }}
      <br/>
      <input type="submit" value="Submit" />
    </form>

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

1 Ответ

1 голос
/ 08 августа 2010

Вы можете попробовать

    author = models.AuthorForm(request.POST)
    books = BookFormSet(request.POST)
    if author.is_valid():

вместо

    author = models.AuthorForm(request.POST)
    if author.is_valid():
        books = BookFormSet(request.POST)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...