【发布时间】:2013-07-28 21:32:26
【问题描述】:
我正在尝试使用 django UpdateviewEdit/Update 一个模型对象(记录)
model.py
from django.db import models
from myapp.models import Author
class Book(models.Model):
author = models.ForeignKey(Author)
book_name = models.CharField(max_length=260)
amount = models.DecimalField(
max_digits=10, decimal_places=2, default=0.00)
description = models.TextField()
views.py
class BookEditView(generic.UpdateView):
model = Book
template_name_suffix = '_update_form'
exclude = ('author',)
def get_success_url(self):
return reverse("books:list_of_books")
books_update_from.html
{% extends "base.html" %}
{% block main_title %}Edit Book{% endblock %}
{% block content %}
<form method="post" action="" class="form-horizontal">
{{form.as_p}}
</form>
{% endblock %}
当表单被渲染时,Author 外部字段仍然显示在页面上,即使我在exclude 中提到了它,BookEditview 如上所述
那么如何隐藏该字段并提交表单?
我还尝试通过渲染单个字段,如form.book_name、form.amount 等,(我知道这种方法不能解决上述问题,但只是进行了一次愚蠢的尝试)。当我提交表单时,它的动作可以忽略不计并且什么都不做,因为我们没有提交author foreign key value,因此表单无效并且提交什么都不做
所以我想知道的是如何在使用UpdateView 将其呈现为表单以编辑模型时从模型中排除字段(我在上面的代码中做错了吗?)
我还想知道Updateview 的概念,如果我们排除foreignKey 字段,那么就不需要提交外键值?(因为编辑表单只有在每个字段包括@987654335 时才有效@ 是带值提交的?)
【问题讨论】:
标签: python django view django-models django-forms