簡體   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