我有这个模型:
models.py
class Upload_model(models.Model):
content=models.CharField(max_length=200)
user_name=models.ForeignKey(User)
forms.py
class upload_form(ModelForm):
class Meta:
model=Upload_model
fields=[“content”]
views.py
我正在尝试编写一个函数,该函数可将所有用户的Upload_model迭代创建。但这行不通。
def upload_all_user_models(request):
if request.method==”POST”:
form=upload_form(request.POST, request.FILES)
instance=form.save(commit=False)
instance.user_name=User.objects.all()
return redirect(“upload_all_user_models”)
else:
form=upload_form()
return render(request,”uploadpage.html”,{“form”:form})
我希望在创建时将Upload_model分配给所有用户,但是我似乎遇到了ValueError。我该如何解决?
答案 0 :(得分:0)
我相信,当您使用instance.user_name=User.objects.all()
时,您是在将instance.user_name
分配给User的查询集,而不是每个用户(即instance.user_name=[queryset<id=1, id=2>]
)。您需要设置条件语句来确定每个用户是否没有Upload_model,然后将Upload_model添加并保存到该用户。
由于首先创建模型的顺序:upload_model或用户,您要创建的内容将变得很复杂。
假设您有5个用户,并创建了一个Upload_model,然后将Upload_model保存到5个用户。如果用户#6出现了怎么办?
我敢肯定,有一种方法可以配置代码以使其随心所欲,但是到最后,您的问题还很模糊,但是总而言之,您会遇到ValueError,因为尝试不将user_name分配给每个用户,而是分配给用户列表。