我正在尝试将数据保存在具有django admin的m2m关系的模型中,但是当我保存该错误时,尝试将关系更改为外键,但这不是我所需要的,有什么主意吗?
models.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)
admin.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()
答案 0 :(得分:1)
此错误告诉您的是,您的帖子实际上在数据库中不存在,无法创建多对多关系。
您说过要尝试将其保存在管理员中?我可以假设您正在为其分配一个类别,然后尝试保存它。
解决此问题的方法是先保存父模型,然后添加类别。
例如:
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)
运行您的迁移,打开管理页面并创建新帖子,而不分配类别,然后单击保存。
创建帖子后,您现在可以分配一个类别,然后再次单击“保存”。