如何改变Django模型字段的值,当选择某个特定的选择时?

我在Django上为博客文章创建了一个模型。每个帖子有两个状态选择。发布或草稿。我如何在文章保存后将Publish改为Published?

这是我的代码。

从django.db导入models

从django.contrib.auth.models导入User。

在这里创建您的模型。

STATUS = ((0, “Draft”)。

(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导入adminfrom.models导入*。

在这里注册您的模型

class 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)

解决方案:

你的第一个方法是把你的值 “publish “改成 “published “就可以了。额外的 “publish “状态是没有意义的。每当一个帖子被保存时,状态字段应该改为 “已发布”。如果你需要它在那里,那么你可以在你的模型中添加另一个BooleanField,比如 “is_published”,并在你的保存方法中检查它,这样每当self.status等于 “published “时,就会使该字段为真。如果你想对你的模型进行额外的检查,那么只需要为你的模型类写一个函数来改变 “is_published “的值。

所以要改变模型中 “is_published “字段的值。

在你的Post类中:添加 “is_published “字段的值

is_published = models.BooleanField(default=False)

然后覆盖你的模型保存方法。

def save(self, *args, **kwargs):
    if self.status == 1:
        self.is_published = True
    super(Post, self).save(*args, **kwargs)

给TA打赏
共{{data.count}}人
人已打赏
未分类

Kotlin - 程序化创建的Spinner箭头不见了。

2022-9-9 0:11:20

未分类

如何免费部署一个java Spring引导应用?

2022-9-9 0:11:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索