我的模型中有多个字段选择。我想更改雕像的价值。我读了这些文章和这个问题。在那些链接中,有两种方式假定:
- 创建另一个模型
- 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句