gpt4 book ai didi

python - 在 django View 中更改模型的选择字段

转载 作者:行者123 更新时间:2023-12-01 00:57:50 26 4
gpt4 key购买 nike

我的模型中有多个字段选择。我想改变雕像在我看来的值(value)。我读过这些article还有这个question .在这些链接中,假设有两种方式:

  1. create another model
  2. MultipleChoiceField

如果我想使用 MultipleChoiceField,我必须做什么?我阅读了这些链接:1 , 2 , 3 , 4 , 5 ,和6 ;但没有一个云能帮助我,我什么也听不懂。这也是我的代码:

#models.py
STATUE_CHOICE = (
('draft', 'draft'),
('future', 'future'),
('trash', 'trash'),
('publish', 'publish'),
)
statue = models.CharField(max_length=10, choices=STATUE_CHOICE)

#views.ppy
def delete_admin_trash_post(request, slug):
post = get_object_or_404(Post, slug=slug)

if request.method =="POST":
form = AddPostForm(request.POST, instance=post)
post.statue = 'trash'
post.save()
return redirect('view_admin_post')
else:
form = AddPostForm(instance=post)
template = 'blog/admin_blog/delete_admin_trash_post.html'
context = {'form': form}
return render(request, template, context)

能否简单完整地解释一下这个方法?

最佳答案

MultipleChoiceField 是一个表单小部件。所以你应该在表单中使用它。小部件已准备好使用 HTML 输入,这些输入具有一些验证和清理数据的验证器。要创建表单,只需创建一个名为 forms.py 的新文件(这是添加新文件的常见方法。您可以在views.py 中执行此操作),然后用它创建一个表单。默认情况下,带有选择的 charfields 模型具有 ChoiceField 小部件。如果你想覆盖它,你可以在 Meta 类中进行。您有一个名为 Post 的模型:

# models.py
class Post(models.Model):
STATUE_CHOICE = (
('draft', 'draft'),
('future', 'future'),
('trash', 'trash'),
('publish', 'publish'),
)
statue = models.CharField(max_length=10, choices=STATUE_CHOICE)
.
.

和一个表单AddPostForm:

# forms.py
# or
# views.py
from .models import Post

class AddPostForm(forms.ModelForm):
class Meta:
model = Post
fields = ('statue',...)
widgets = {'statue' : forms.MultipleChoiceField(choices=Post.STATUE_CHOICE)}

这篇文章可能有用: https://docs.djangoproject.com/en/2.2/topics/forms/modelforms/#overriding-the-default-fields

关于python - 在 django View 中更改模型的选择字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56102993/

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