繁体   English   中英

在 Django 中创建时,如何将模型分配给所有用户?

[英]How can I assign a model to all users upon creation in Django?

我有这个模型:

模型.py

    class Upload_model(models.Model):
        content=models.CharField(max_length=200)
        user_name=models.ForeignKey(User)

表格.py

class upload_form(ModelForm):
    class Meta:
        model=Upload_model
        fields=[“content”]

视图.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_model 添加并保存到用户。

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

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

我确定有一种方法可以配置代码以使其成为您想要的方式,但最后,您的问题很模糊,但总而言之,您收到了 ValueError 因为您正在尝试分配user_name 不是分配给每个用户,而是分配给用户列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM