Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “需要为字段“id”设置一个值才能使用此多对多关系_Python_Django - Fatal编程技术网

Python “需要为字段“id”设置一个值才能使用此多对多关系

Python “需要为字段“id”设置一个值才能使用此多对多关系,python,django,Python,Django,我试图将数据保存在一个模型中,该模型具有来自django admin的m2m关系,但当我保存该错误时,尝试将该关系更改为foreignkey,但这不是我需要的,有什么想法吗 models.py 类Postmodels。模型: titulo=models.CharFieldverbose\u name=titulo del post,最大长度=50 posting=HTMLFieldverbose_name=posting,blank=True,null=True categoria=models

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

models.py

类Postmodels。模型: titulo=models.CharFieldverbose\u name=titulo del post,最大长度=50 posting=HTMLFieldverbose_name=posting,blank=True,null=True categoria=models.ManyToManyFieldposts.categoria,verbose_name=categorias del post slug=models.SlugFieldverbose\u name=slug del post,help\u text=identificator unico del post,unique=True 管理员

@管理员注册中心 类PostAdminadmin.ModelAdmin: 只读_字段='slug', def save_modelself、请求、obj、表单、更改: 如有更改: 格式=%d%S es= 如果obj.titulo.findes>=1: obj.slug=obj.titulo.replaces,-.lower+-+obj.fecha_creacion.strftimeformato 其他: obj.slug=obj.titulo.lower+-+obj.fecha_creacion.strftimeformato 对象保存
这个错误告诉您的是,您的帖子实际上不存在于要创建的多对多关系的数据库中

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

解决此问题的方法是先保存父模型,然后添加类别

例如:

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)
运行迁移,打开“管理”页面,创建一篇新文章,无需指定类别,然后单击“保存”

创建帖子后,您现在可以指定一个类别,然后再次单击“保存”