gpt4 book ai didi

python - 通过排除字段使用更新 View Django 编辑模型对象

转载 作者:太空狗 更新时间:2023-10-29 22:31:00 24 4
gpt4 key购买 nike

我正在尝试使用 django UpdateviewEdit/Update 模型对象(记录)

模型.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 外部字段仍显示在页面上,即使我在 BookEditviewexclude 中提到了它如上

那么如何隐藏该字段并提交表单呢?

我还尝试通过呈现单个字段,如 form.book_nameform.amount 等,(我知道这种方法不能解决上述问题,但只是给了一个愚蠢的尝试)。当我提交表单时,它的操作可以忽略不计并且什么都不做,因为我们没有提交 author 外键值 因此表单无效并且提交不做任何事情

所以我想知道的是如何在使用 UpdateView 将模型渲染为表单时从模型中排除该字段以编辑模型(我在上面的代码中做错了吗?)

我还想知道 Updateview 的概念,如果我们排除 foreignKey 字段,则不需要提交外键值?(因为编辑表单将仅当包含 Author Foreign Key 的每个字段都提交了值时才有效?)

最佳答案

定义一个排除字段的BookForm,

class BookForm(forms.ModelForm):
class Meta:
model = Book
exclude = ('author',)

然后在你的 View 中使用这个表单

class BookEditView(generic.UpdateView):
model = Book
form_class = BookForm
...

关于python - 通过排除字段使用更新 View Django 编辑模型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17918184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com