Shi*_*dla 6 python django view django-models django-forms
我正在尝试Edit/Update使用django的模型对象(记录)Updateview
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()
Run Code Online (Sandbox Code Playgroud)
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")
Run Code Online (Sandbox Code Playgroud)
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 %}
Run Code Online (Sandbox Code Playgroud)
呈现表单时,Author即使我exclude在BookEditview上面提到它,外部字段仍然显示在页面上
那么如何隐藏该字段并提交表单?
此外,我试图通过渲染个别领域,如form.book_name,form.amount等,(我知道这个方法没有解决上述问题,但只是给出一个愚蠢的尝试).当我提交表格时,其行为可以忽略不计,因为我们没有提交author foreign key value,因此表格无效,提交不做任何事情
所以我想知道的是如何在将模型渲染为使用UpdateView编辑模型的表单时从模型中排除该字段(我在上面的代码中做错了吗?)
另外我想知道Updateview如果我们排除该foreignKey字段然后不需要提交外键值的概念?(因为编辑表单只有在每个包含该字段的字段Author Foreign Key提交值时才有效?)
定义排除该字段的BookForm,
class BookForm(forms.ModelForm):
class Meta:
model = Book
exclude = ('author',)
Run Code Online (Sandbox Code Playgroud)
然后在您的视图中使用此表单
class BookEditView(generic.UpdateView):
model = Book
form_class = BookForm
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8997 次 |
| 最近记录: |