我使用 slugify 為我的博客帖子 URL 創(chuàng)建 slugs。為了在 slug 中接受非英語字符(希臘語),我重寫了 Post 模型的 save() 方法,其中包含一個(gè)參數(shù)allow_unicode=True。但是,這在管理區(qū)域中不起作用。每當(dāng)我嘗試通過設(shè)置帶有希臘語標(biāo)題的新帖子或編輯現(xiàn)有帖子的英文別名來在管理區(qū)域中設(shè)置希臘字符別名時(shí),管理表單將不允許我保存。為此,正如我在其他線程中發(fā)現(xiàn)的那樣,我應(yīng)該重寫 admin.py 文件中的 save_model() 方法。所以我這樣做了,但出現(xiàn)錯(cuò)誤?,F(xiàn)在我收到的錯(cuò)誤指出,管理區(qū)域請(qǐng)求的帖子的 slug 將隨舊 url(基于 id 的 URL)而更改,而不是我在 urls.py 中設(shè)置的 slug-url。我收到的錯(cuò)誤要么是AttribureError at /admin/blog/post/1(當(dāng)我編輯現(xiàn)有帖子的標(biāo)題時(shí)),要么是AttribureError at /admin/blog/post/add(當(dāng)我添加新帖子時(shí))。兩種情況下的異常值為'WSGIRequest' object has no attribute 'save'我應(yīng)該如何設(shè)置管理端保存方法來使用 slug url 請(qǐng)求 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 回答
絕地?zé)o雙
TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
當(dāng)您調(diào)用super()方法時(shí),不應(yīng)將self其作為參數(shù)傳遞。因此,代替您當(dāng)前的代碼:
def save_model(self, request, obj, form, change): super(PostAdmin, self).save_model(self, request, obj, form)
您應(yīng)該調(diào)用super()withoutself作為參數(shù),并change在末尾添加缺失的內(nèi)容:
def save_model(self, request, obj, form, change): super(PostAdmin, self).save_model(request, obj, form, change)
添加回答
舉報(bào)
0/150
提交
取消
