繁体   English   中英

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

[英]How can I change the value of a Django model field when a particular choice is selected?

我在 django 上为博客文章创建了 model。 每个帖子都有两种状态选择:发布或草稿。 保存帖子后如何将发布更改为已发布?

这是我的代码:

从 django.db 导入模型

从 django.contrib.auth.models 导入用户

在此处创建您的模型。

状态 = ( (0,"草稿"),

(1,"发布"), )

class 柱(型号.型号):

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 导入管理员 from.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)

您的第一种方法是将您的值“发布”更改为“已发布”。 拥有额外的“发布”状态是没有意义的。 每当保存帖子时,状态字段应更改为“已发布”。 如果无论如何你需要它在那里,那么你可以添加另一个 BooleanField 像“is_published”到你的 model 并在你的保存方法中检查它,所以每当 self.status 等于“发布”时,使该字段为真。 如果您想对您的 model 进行额外检查; 然后只需为您的 model class 编写一个 function 来更改“is_published”的值。

因此要更改 model 中“is_published”字段的值;

在您的帖子 class 中:添加

is_published = models.BooleanField(default=False)

然后覆盖您的 model 保存方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM