Django использует общий вид для create_update update_object, форма не отображается - PullRequest
0 голосов
/ 01 декабря 2009

Попытка использовать общий вид, чтобы я мог обновить объект через форму, обращенную к пользователю. Мой код выглядит следующим образом:

from django.views.generic.create_update import update_object

@permission_required('myapp.change_foo', login_url="/accounts/login/")
def foo_update(request, foo_id):
    return update_object(
        request,
        form_class=FooForm,
        object_id=sr_id,
        template_name = 'foo/update.html',
        template_object_name = 'foo',
    )

Определение формы выглядит следующим образом:

class FooForm(ModelForm):
    somefield = forms.CharField(
        widget=forms.TextInput(attrs={'readonly':'readonly'})
    )

    class Meta:
        model = Foo

И в моем шаблоне у меня есть такой фрагмент в foo / update.html:

    <form action="" method="post"> 
        <table>
            {{ foo.as_table }}
        </table>
        <p>
            <input type="submit" value="Submit" />
        </p>
    </form>

У меня никогда раньше не было проблем с отображением 'foo', но я впервые использую этот общий вид. Никаких синтаксических ошибок, просто никакая форма не отображается в моем шаблоне вообще.

Разве update_object () не встраивает 'foo' в форму? мне все еще нужно добавить форму, добавить дополнительный контент, а затем написать для нее логику save ()? Хотелось бы, чтобы было немного больше документации по этому универсальному представлению и как оно работает.

1 Ответ

0 голосов
/ 01 декабря 2009

Это прямо в документации :

В дополнение к extra_context, контекст шаблона будет:

  • form: экземпляр django.forms.ModelForm, представляющий форму для редактирования объекта. Это позволяет легко ссылаться на поля формы в системе шаблонов.

Аргумент template_object_name влияет на имя фактического объекта.

/ редактировать

Боже, вы, люди ... критикуете один из лучших задокументированных проектов с открытым исходным кодом, но даже не пытаетесь читать документацию, если она вам подделана Чтобы продолжить мою цитату из документов:

Например, если модель имеет два поля, имя и адрес:

 <form action="" method="post">
 <p>{{ form.name.label_tag }} {{ form.name }}</p>
 <p>{{ form.address.label_tag }} {{ form.address }}</p>
 </form>

См. Документацию по формам для получения дополнительной информации об использовании объектов формы в шаблонах.

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