Django 如何自动更改布尔字段的值?
此特定的布尔字段确定文章是否为草稿。默认设置为True 当用户编辑草稿时,我希望该值自动更改为False,以便与所有其他帖子一起列出(而不是在草稿列表中) “提交”按钮是否可以同时提交帖子和更改布尔值?我认为,理想情况下,一旦输入草稿表单,该字段就会更改 以下是相关代码: 编辑草稿的模板Django 如何自动更改布尔字段的值?,django,forms,post,boolean,Django,Forms,Post,Boolean,此特定的布尔字段确定文章是否为草稿。默认设置为True 当用户编辑草稿时,我希望该值自动更改为False,以便与所有其他帖子一起列出(而不是在草稿列表中) “提交”按钮是否可以同时提交帖子和更改布尔值?我认为,理想情况下,一旦输入草稿表单,该字段就会更改 以下是相关代码: 编辑草稿的模板 {{ title }}</B></h3></div> <div class="row"> <div class="col-sm-12-md-7 co
{{ title }}</B></h3></div>
<div class="row">
<div class="col-sm-12-md-7 col-sm-offset-0 col-sm-8">
<div class="panel panel default">
<div class="panel-body">
<p class="well col-sm-offset-3 col-sm-12">{{ summary }}</p>
<form class="form-horizontal" method="post" action="" enctype="multipart/form-data">
{% csrf_token %}
{% include 'posts/form-template.html' %}
<div class="form-group col-sm-offset-3 col-sm-6">
<div class="col-sm-offset-9 col-sm-10">
<button type="submit" class="btn btn-primary">Send</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
class UpdateForm(forms.ModelForm):
class Meta:
model = Post
fields = [
"title", "content", "categories", "tags",
]
def post_update(request, id=None):
instance = get_object_or_404(Post, id=id)
model = Post
form = UpdateForm(request.POST or None, instance=instance)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
context = {
"title": instance.title,
"instance": instance,
"form": form,
"summary": instance.summary,
}
return render(request, "posts/suggest_form_update.html", context)
这是Post模型
class Post(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
title = models.CharField(max_length=100)
content = HTMLField()
draft = models.BooleanField(default=True)
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
upvote = VotableManager()
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
categories = models.ManyToManyField(
'category.Category',
help_text='Categorize this item.'
)
tags = models.ManyToManyField(
'category.Tag',
help_text='Tag this item.'
)
suggest = models.ForeignKey('Suggest', blank=True, null=True, default=0)
def get_absolute_url(self):
return reverse('posts:detail', kwargs={'pk': self.pk})
def __str__(self):
return self.title
以下是编辑草稿的视图
{{ title }}</B></h3></div>
<div class="row">
<div class="col-sm-12-md-7 col-sm-offset-0 col-sm-8">
<div class="panel panel default">
<div class="panel-body">
<p class="well col-sm-offset-3 col-sm-12">{{ summary }}</p>
<form class="form-horizontal" method="post" action="" enctype="multipart/form-data">
{% csrf_token %}
{% include 'posts/form-template.html' %}
<div class="form-group col-sm-offset-3 col-sm-6">
<div class="col-sm-offset-9 col-sm-10">
<button type="submit" class="btn btn-primary">Send</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
class UpdateForm(forms.ModelForm):
class Meta:
model = Post
fields = [
"title", "content", "categories", "tags",
]
def post_update(request, id=None):
instance = get_object_or_404(Post, id=id)
model = Post
form = UpdateForm(request.POST or None, instance=instance)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
context = {
"title": instance.title,
"instance": instance,
"form": form,
"summary": instance.summary,
}
return render(request, "posts/suggest_form_update.html", context)
您可以通过两种方式完成此任务:
if form.is_valid():
条件中)save()
方法,在您的表单中
def save(self, *args, **kwargs):
self.instance.draft = True
return super(UpdateForm, self).save(*args, **kwargs)
“**这是编辑草稿的视图**”你的视图在哪里???@PrakharTrivedi谢谢。现在添加了它。是什么阻止你自己在视图中这样做?你有实例,为什么不能设置draft=False?@TomHiggins Daniel是对的。你应该在你的views.py文件中这样做。这是推荐的方法。@DanielRoseman,Prakar我觉得自己像个白痴!这很有效。谢谢!