选择特定选项后,如何更改Django模型字段的值?

时间:2020-04-24 09:43:32

标签: python django

我在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)

1 个答案:

答案 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);