我在Django上为博客文章创建了一个模型。每个帖子都有两个状态选择:“发布”或“草稿”。保存帖子后如何将“发布”更改为“已发布”?
这是我的代码:
从django.db导入模型
从django.contrib.auth.models导入用户
在此处创建模型。
状态=( (0,“草稿”),
(1,“发布”), )
class Post(models.Model)
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, unique=True)
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts')
updated_on = models.DateTimeField(auto_now=True)
content = models.TextField()
created_on = models.DateTimeField(auto_now_add=True)
status = models.Integer(choices=STATUS, default=0)
class Meta:
ordering = ['-created_on']
def __str__(self):
return self.title
从django.contrib导入从.models import *
PostAdmin(admin.ModelAdmin)类:
list_display = ('title','slug','status','created_on',)
list_filter = ("status",)
search_fields = ('title', 'content')
prepopulated_fields = {'slug': ('title',)}
admin.site.register(Post,PostAdmin)
答案 0 :(得分:1)
您的第一种方法是将“发布”的值更改为“已发布”。没有额外的“发布”状态是没有意义的。无论何时保存帖子,状态字段都应更改为“已发布”。如果仍然需要它,则可以在模型中添加另一个布尔字段(例如“ is_published”),并在保存方法中进行检查,以便每当self.status等于“ publish”时,将字段设置为True。如果要对模型进行其他检查;然后只需为模型类编写一个函数即可更改“ is_published”的值。
以便更改模型中“ is_published”字段的值;
在您的Post课中: 添加
is_published = models.BooleanField(default = False)
然后覆盖您的模型保存方法:
function convertToUrl($string)
{
return preg_replace('/\s/i', '+', $string);
}
//usage
echo convertToUrl(string);