当前位置: 首页 > 知识库问答 >
问题:

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

孔经武
2023-03-14

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

这是我的代码:

来自django。数据库导入模型

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

在这里创建您的模型。

状态=((0,“草稿”),

(1,“发布”),)

班级职务(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导入管理员从。

类PostAdmin(admin.ModelAdmin):

list_display = ('title','slug','status','created_on',)

list_filter  = ("status",)

search_fields = ('title', 'content')

prepopulated_fields = {'slug': ('title',)}

admin.site.register(邮政,邮政管理)

共有1个答案

赏成益
2023-03-14

你的第一个方法就是把你的价值“发布”仅仅改成“发布”。没有必要拥有额外的“发布”状态。每当保存帖子时,状态字段应更改为“已发布”。如果无论如何你需要它在那里,那么你可以在你的模型中添加另一个布尔字段,比如“is_published”,并在你的保存方法中检查它,所以每当self.status等于“发布”时,让这个字段为真。如果您想对您的模型进行额外的检查;然后只需为您的模型类编写一个函数来更改“is_published”的值。

因此改变模型中“is_published”字段的值;

在你的Post类中:添加

is_published=模型。BooleanField(默认=False)

然后重写您的模型保存方法:

def save(self, *args, **kwargs):
    if self.status == 1:
        self.is_published = True
    super(Post, self).save(*args, **kwargs)
 类似资料:
  • 问题内容: 我需要具有2个字段的django modelform,其中第二个字段选择列表取决于在第一个字段中选择的内容。我的模特: 如果vehicle_type设置为 personal, 如何将 make 字段的选择设置为 PERSONAL_MAKES ?我怎样才能做到这一点?在模型级别上可以吗? __ 问题答案: 您可能不能,因为这取决于用户与表单的交互:您的服务器无法预先知道用户将表单发送到浏

  • 问题内容: 我正在尝试设置选择选项下拉列表的样式。是否可以使选项的字体大小与默认值不同?例如,默认值: 尺寸为7pt;和其中一种选择, 尺寸为13pt。 这是我的下拉列表: 不幸的是,它仅适用于Firefox。可能其他浏览器不支持元素样式吗? 我测试过的浏览器: Chrome:版本27.0.1453.116 m IE:10 的Firefox:22.0 问题答案: 将CSS类添加到标签中以对其进行样

  • 问题内容: 我用。字段之一是: 我需要更改其显示类型。我不想在显示中使用(或在Python 2中),而是要显示曲目的名称和日期。 我该怎么做? 问题答案: 子类并重写以返回曲目名称和日期。然后在中使用新字段。

  • 问题内容: 我有一个Django应用程序,想要在用户的个人资料中显示多个选择复选框。然后,他们将能够选择多个项目。 这是我的models.py的简化版本: 和我的形式课: 还有我的views.py: 我可以看到POST仅发送一个值: 并且本地vars参数正在发送一个列表: 所有表单字段都显示正确,但是当我提交POST时,我得到一个错误 错误绑定参数7-可能是不受支持的类型。 我是否需要在视图中进一

  • 问题内容: 我有以下型号: 在管理界面中,当创建新演示时,在用户从下拉列表中选择类别之后,我想限制“项目”下拉列表中的选择数量。如果用户选择其他类别,则项目选择应相应更新。我想在客户端上限制项目选择,甚至在服务器上进行表单验证之前。这是为了提高可用性,因为项目列表可能超过1000个,能够按类别缩小范围将有助于使其更易于管理。 是这样做的“捷径”还是自定义JavaScript是这里的唯一选择? 问题

  • 我将html写成 现在我希望如果选项是1,那么它应该被选择为 请帮帮我!!!