如何在Django中创建模型时为所有用户分配模型



我有这个型号:

型号.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。我该如何解决这个问题?

我相信,当您使用instance.user_name=User.objects.all()时,您将instance.user_name分配给User的查询集,而不是每个单独的用户(即instance.user_name=[queryset<id=1, id=2>](。您需要设置条件语句来确定每个用户是否没有Upload_model,然后向用户添加并保存Upload_mode。

由于首先创建模型的顺序:upload_model或用户,您试图创建的内容将非常复杂。

假设您有5个用户,并创建一个Upload_model,将Upload_mode保存到这5个用户。如果用户#6出现,会发生什么?

我相信有一种方法可以配置代码,使其成为您想要的样子,但最后,您的问题很模糊,但总的来说,您会得到一个ValueError,因为您试图将user_name分配给用户列表,而不是每个用户。

最新更新