Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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 Manytomy字段不接受正确的模型_Python_Django_Django Models_Manytomanyfield - Fatal编程技术网

Python Django Manytomy字段不接受正确的模型

Python Django Manytomy字段不接受正确的模型,python,django,django-models,manytomanyfield,Python,Django,Django Models,Manytomanyfield,我试图从一个模型中生成一个manytomy字段,该模型不是manytomy字段将包含列表的模型。e、 g class Following(models.Model): following_id = models.AutoField(primary_key=True) following_user = models.ForeignKey(User, models.DO_NOTHING, related_name="following_user") fol

我试图从一个模型中生成一个manytomy字段,该模型不是manytomy字段将包含列表的模型。e、 g

class Following(models.Model):
    following_id = models.AutoField(primary_key=True)
    following_user = models.ForeignKey(User, models.DO_NOTHING, related_name="following_user")
    following = models.ManyToManyField(User, related_name="following")
这对我来说很好,但是当我尝试进入shell并执行类似于
User.following.add(OtherUser)
的操作时,我收到一个错误,它希望
OtherUser
following
的实例。为什么会这样?在声明
后面的
变量时,我没有指定ManyToManyField存储用户实例吗


models.ManyToManyField(**User**,related\u name=“following”)
您只能将一个模型与其他模型引用一次。但是您使用了两次
用户模型
,一次使用
跟随用户字段
,另一次使用
跟随字段
。看看你的模型下面

class Following(models.Model):
    following_id = models.AutoField(primary_key=True)
    following_user = models.ForeignKey(*User*, models.DO_NOTHING, related_name="following_user")
    following = models.ManyToManyField(*User*, related_name="following")

1-创建一个用户:
user=user();user.save()

2-创建以下内容:
following=following();following.save()

3-将用户添加到以下位置:
following.following.Add(user)

尝试以下操作:

当您的模型与另一个模型存在多对多关系时,可以看到使用commit=False的另一个副作用。如果模型具有多对多关系,并且在保存表单时指定commit=False,Django无法立即保存多对多关系的表单数据。这是因为在数据库中存在实例之前,不可能为实例保存多对多数据


为了解决这个问题,每次使用commit=False保存表单时,Django都会向ModelForm子类添加一个save_m2m()方法。手动保存表单生成的实例后,可以调用save_m2m()保存多对多表单数据。例如:

我可以这样做,因为我添加了相关的\u name关键字参数。这似乎不是问题所在。我可以调用以下用户集和以下用户集,没有问题。问题就是我所描述的。此外,我需要使用用户两次,我的程序才能工作。