我一直在招致这个问题:
'用户'对象不支持索引
自从我从ForeignKey更改为ManyToManyField以获取用户:
user = models.ManyToManyField(User) # Was ForeignKey before
这是我的views.py文件:
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user # The problem I'm guessing
instance.offered_fund = default_state
instance.save()
我尝试按照here发现的说明操作,但没有成功。另外我使用Python3,如果这与问题有关。关于如何解决这个问题的任何想法?感谢
答案 0 :(得分:2)
instance.user = request.user
嗯,用户是ManyToManyField,你不能只是将它分配给模型,因为它是"设置"模特。
你不想这样做吗?
instance.user.add(request.user)
答案 1 :(得分:0)
首先,您需要这行代码才能将用户添加到对象中。
instance.user.add(request.user)
而不是
instance.user = request.user
但是,您还需要运行一些更改以将当前外键用户转换为新的M2M用户数据。
所以我建议先做以下步骤:
1。)建立新的M2M关系并保留现有的外键。
user = models.ForeignKey(User)
users = models.ManyToManyField(User)
2.。)立即迁移数据库。
python manage.py makemigrations
python manage.py migrate
3.。)从终端运行以下代码以迁移数据。
for obj in Model.objects.all():
obj.users.add(obj.user)
4。)删除旧用户字段(如果您愿意,也可以将用户更改为用户,但我建议使用users
来反映多个。再次迁移。
5.。)在顶部的代码中进行必要的更改,以添加或处理用户而不是用户。