Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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 Django ManyToManyField在管理员中保存时出错?_Python_Django_Django Models_Django Admin - Fatal编程技术网

Python Django ManyToManyField在管理员中保存时出错?

Python Django ManyToManyField在管理员中保存时出错?,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我的代码有什么问题 class Group(ImageModel): title = models.CharField(verbose_name = "Title", max_length=7) photos = models.ManyToManyField('Photo', related_name='+', verbose_name=_('Photo'),

我的代码有什么问题

class Group(ImageModel):
     title = models.CharField(verbose_name = "Title", max_length=7)
     photos = models.ManyToManyField('Photo', related_name='+', 
                                             verbose_name=_('Photo'),
                                             null=True, blank=True)

    .....


     pid = Photo.objects.get(image = str_path)

     gid= Group.objects.get(id = self.id)       

     self.save_photos(gid, pid)

    ....


    def save_photos(self, gid, pid):
       group_photo = GroupPhotos(groupupload=gid.id,
                                        photo=pid.id
                                        )
       group_photo.save()
我的群照模型是:

class GroupPhotos(models.Model):
    groupupload = models.ForeignKey('Group')
    photo = models.ForeignKey('Photo')
    class Meta:
        db_table = u'group_photos'
当我想从管理面板保存它时,我得到如下值错误:

Cannot assign "38": "GroupPhotos.groupupload" must be a "Group" instance.

使用
groupphoto=GroupPhotos(groupupupload=gid,photo=pid
)定义,它正在工作,但GroupPhotos表(GroupPhotos)中没有任何更改。打印这个
打印pid.id,'>>>',gid.id
我得到了真实的关系

更新:

我从早上就开始工作,但没有进展。。。我也尝试过,但没有任何改变:

pid = Photo.objects.get(image = str_path)

ger = Group.objects.get(id = self.id)
        ger.title = self.title       
        ger.save()

        ger.photos.add(pid)
错误在这里:

group_photo = GroupPhotos(groupupload=gid.id, photo=pid.id)
groupupload
photo
的参数应该分别是
Group
photo
的实例。请尝试以下操作:

group_photo = GroupPhotos(groupupload=gid, photo=pid)
换句话说,创建对象时,需要传递预期类型的参数,而不是整数(可能是所需对象的主键,但也可能不是,这就是为什么需要传递正确类型的对象)。

错误如下:

group_photo = GroupPhotos(groupupload=gid.id, photo=pid.id)
groupupload
photo
的参数应该分别是
Group
photo
的实例。请尝试以下操作:

group_photo = GroupPhotos(groupupload=gid, photo=pid)

换句话说,创建对象时,需要传递预期类型的参数,而不是整数(可能是所需对象的主键,但也可能不是,这就是为什么需要传递正确类型的对象).

我通过在我的manytomanyfield中添加选项解决了我的问题:

photos = models.ManyToManyField('Photo', related_name='+', 
                                     verbose_name=_('Photo'),
                                     null=True, blank=True, through=GroupPhotos)
有关ManyToManyField.To的一些信息:

Django将自动生成一个表来管理多对多 关系。但是,如果要手动指定 中间表,可以使用“通过”选项指定 Django模型,表示要创建的中间表 使用

此选项最常见的用途是当您希望将额外数据与多对多关系关联时


我已通过向我的manytomanyfield添加选项解决了我的问题:

photos = models.ManyToManyField('Photo', related_name='+', 
                                     verbose_name=_('Photo'),
                                     null=True, blank=True, through=GroupPhotos)
有关ManyToManyField.To的一些信息:

Django将自动生成一个表来管理多对多 关系。但是,如果要手动指定 中间表,可以使用“通过”选项指定 Django模型,表示要创建的中间表 使用

此选项最常见的用途是当您希望将额外数据与多对多关系关联时


谢谢你@Simeon Visser。我已经尝试过了,但没有更改GroupPhotos表(group_photos)中的任何内容。当我尝试在“管理”面板中添加此关系时,将其插入GroupPhotos中没有错误。您是否更改了GroupPhotos表中的任何内容?除了我上面的答案,我在你的代码中没有看到需要更改的内容。不,我在群照中没有更改任何内容。它是从组(ManyToManyField关系)自动创建的,我用inspecdb获得它,然后添加到我的模型中,只更改了模型名称…使用
Group\u photo=GroupPhotos(groupupupload=gid,photo=pid)
defination它正在工作,但GroupPhotos表(Group\u photos)中没有任何更改。打印这个
打印pid.id,'>>>',gid.id
我得到了真实的关系…谢谢@Simeon Visser。我已经尝试过了,但没有更改GroupPhotos表(group_photos)中的任何内容。当我尝试在“管理”面板中添加此关系时,将其插入GroupPhotos中没有错误。您是否更改了GroupPhotos表中的任何内容?除了我上面的答案,我在你的代码中没有看到需要更改的内容。不,我在群照中没有更改任何内容。它是从组(ManyToManyField关系)自动创建的,我用inspecdb获得它,然后添加到我的模型中,只更改了模型名称…使用
Group\u photo=GroupPhotos(groupupupload=gid,photo=pid)
defination它正在工作,但GroupPhotos表(Group\u photos)中没有任何更改。打印此
print pid.id,'>>>',gid.id
我正在获得真实的关系…仍然没有解决问题…“它正在工作,但GroupPhotos表(group_photos)中没有任何更改”-你的意思是它没有保存数据吗?是的@Simon it没有保存任何关系数据…仍然没有解决问题。。。“它正在工作,但GroupPhotos表(group_photos)中没有任何更改”-你的意思是它没有保存数据吗?是@Simon它没有保存任何关系数据。。。