<Post:mi Post>“在使用此多对多关系之前,需要为字段“id”设置一个值

2024-06-17 12:39:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将数据保存在一个模型中,该模型具有来自django admin的m2m关系,但是当我保存该错误时,尝试将关系更改为foreignkey,但这不是我需要的,有什么想法吗?你知道吗

你知道吗型号.py你知道吗

class Post(models.Model):
    titulo = models.CharField(verbose_name="titulo del post", max_length=50)
    posting = HTMLField(verbose_name="posting",blank=True,null=True)
    categoria = models.ManyToManyField("posts.Categoria", verbose_name="categorias del post")
    slug = models.SlugField(verbose_name="slug del post", help_text="identificador unico del post", unique=True)

你知道吗管理员.py你知道吗


@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    readonly_fields = ('slug',)

    def save_model(self,request,obj,form,change):
        if change:
            formato = "%d%S"
            es = " "
            if obj.titulo.find(es) >= 1:
                obj.slug = obj.titulo.replace(es, "-").lower() + "-" + obj.fecha_creacion.strftime(formato)
            else:
                obj.slug = obj.titulo.lower() + "-" + obj.fecha_creacion.strftime(formato)
            obj.save()


Tags: namepy模型trueobjverboseesadmin
1条回答
网友
1楼 · 发布于 2024-06-17 12:39:36

这个错误告诉您的是,您的文章实际上并不存在于要创建多对多关系的数据库中。你知道吗

你说你想把它存到管理员那里?我可以假设您为它分配了一个类别,然后试图保存它。你知道吗

解决这个问题的方法是先保存父模型,然后添加类别。你知道吗

例如:

post = Post.objects.create(titulo="Test") # Create post first
post.categoria = Categoria.objects.last() # and then assign m2m relationship
post.save() # save post.

另一种方法是设置

    categoria = models.ManyToManyField("posts.Categoria", verbose_name="categorias del post")

对此:

categoria = models.ManyToManyField("posts.Categoria", verbose_name="categorias del post", blank=True)

运行迁移,打开“管理”页,创建一篇新文章,不指定类别,然后单击“保存”。你知道吗

创建文章后,现在可以指定一个类别,然后再次单击“保存”。你知道吗

相关问题 更多 >