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

时间:2020-09-29 22:16:55

标签: python django django-models django-forms django-views

我有这个模型:

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。我该如何解决?

1 个答案:

答案 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分配给每个用户,而是分配给用户列表。