亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何重寫管理 save_model 方法

如何重寫管理 save_model 方法

至尊寶的傳說 2023-08-15 18:52:16
我使用 slugify 為我的博客帖子 URL 創建 slugs。為了在 slug 中接受非英語字符(希臘語),我重寫了 Post 模型的 save() 方法,其中包含一個參數allow_unicode=True。但是,這在管理區域中不起作用。每當我嘗試通過設置帶有希臘語標題的新帖子或編輯現有帖子的英文別名來在管理區域中設置希臘字符別名時,管理表單將不允許我保存。為此,正如我在其他線程中發現的那樣,我應該重寫 admin.py 文件中的 save_model() 方法。所以我這樣做了,但出現錯誤?,F在我收到的錯誤指出,管理區域請求的帖子的 slug 將隨舊 url(基于 id 的 URL)而更改,而不是我在 urls.py 中設置的 slug-url。我收到的錯誤要么是AttribureError at /admin/blog/post/1(當我編輯現有帖子的標題時),要么是AttribureError at /admin/blog/post/add(當我添加新帖子時)。兩種情況下的異常值為'WSGIRequest' object has no attribute 'save'我應該如何設置管理端保存方法來使用 slug url 請求 url?先感謝您!models.py:from django.db import modelsfrom django.utils import timezonefrom django.contrib.auth.models import Userfrom django.urls import reversefrom ckeditor.fields import RichTextFieldfrom django.utils.text import slugifyfrom taggit.managers import TaggableManagerclass Post(models.Model):    title = models.CharField(max_length=100)    content = RichTextField(blank=True, null=True)    date_posted = models.DateTimeField(default=timezone.now)    author = models.ForeignKey(User, on_delete=models.CASCADE)    is_published = models.BooleanField(default=True)    slug = models.SlugField(unique=True, max_length=100)    tags = TaggableManager(blank=True)    def __str__(self):        return self.title    def get_absolute_url(self):        return reverse('post-detail', kwargs={'slug': self.slug})    def save(self, *args, **kwargs):        if not self.slug:            self.slug = slugify(self.title, allow_unicode=True)        super(Post, self).save(*args, **kwargs)admin.py:from django.contrib import adminfrom .models import Postfrom django.utils.text import slugify)
查看完整描述

1 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

當您調用super()方法時,不應將self其作為參數傳遞。因此,代替您當前的代碼:

def save_model(self, request, obj, form, change):
    super(PostAdmin, self).save_model(self, request, obj, form)

您應該調用super()withoutself作為參數,并change在末尾添加缺失的內容:

def save_model(self, request, obj, form, change):
    super(PostAdmin, self).save_model(request, obj, form, change)


查看完整回答
反對 回復 2023-08-15
  • 1 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號