【发布时间】:2021-01-26 02:46:25
【问题描述】:
为期货网址创建了 slug 变量并进行了 ./makemigrations 和 migrate 并且该参数出现在管理面板中,但是当我在进行空的“theblog”迁移后尝试迁移时出现此错误:
class Migration(migrations.Migration):
File "xxx/theblog/models.py", line 104, in Migration
migrations.RunPython(generate_slugs_for_old_posts, reverse=reverse_func),
TypeError: __init__() got an unexpected keyword argument 'reverse'
将 slug 参数从 null 和空白更改为唯一,但现在这似乎不是问题。我知道问题来自 get_success_url 但真的不知道如何解决。
models.py:
from django.utils.text import slugify
class Post(models.Model):
title= models.CharField(max_length=100)
header_image = models.ImageField(null=True , blank=True, upload_to="images/")
title_tag= models.CharField(max_length=100)
author= models.ForeignKey(User, on_delete=models.CASCADE)
body = RichTextUploadingField(extra_plugins=
['youtube', 'codesnippet'], external_plugin_resources= [('youtube','/static/ckeditor/youtube/','plugin.js'), ('codesnippet','/static/ckeditor/codesnippet/','plugin.js')])
post_date = models.DateTimeField(auto_now_add=True)
category = models.CharField(max_length=50, default='uncategorized')
slug = models.SlugField(unique=True)
snippet = models.CharField(max_length=200)
status = models.IntegerField(choices=STATUS, default=0)
likes = models.ManyToManyField(User, blank=True, related_name='blog_posts')
def save(self, *args, **kwargs):
self.slug = self.generate_slug()
return super().save(*args, **kwargs)
def generate_slug(self, save_to_obj=False, add_random_suffix=True):
generated_slug = slugify(self.title)
random_suffix = ""
if add_random_suffix:
random_suffix = ''.join([
random.choice(string.ascii_letters + string.digits)
for i in range(5)
])
generated_slug += '-%s' % random_suffix
if save_to_obj:
self.slug = generated_slug
self.save(update_fields=['slug'])
return generated_slug
def generate_slugs_for_old_posts(apps, schema_editor):
Post = apps.get_model("theblog", "Post")
for post in Post.objects.all():
post.slug = slugify(post.title)
post.save(update_fields=['slug'])
def reverse_func(apps, schema_editor):
pass # just pass
class Migration(migrations.Migration):
dependencies = []
operations = [
migrations.RunPython(generate_slugs_for_old_posts, reverse=reverse_func),
]
【问题讨论】:
标签: django django-urls django-migrations