首页 > 解决方案 > 如何将模型实例连接到 django 中的用户?

问题描述

我希望这样做,以便创建个人资料的登录用户在创建个人资料时链接到他们的 guestprofile 模型。

当我在登录时创建访客配置文件时,它成功创建了访客配置文件,但在访客配置文件管理屏幕中,没有用户连接到创建的访客配置文件模型。相反,有一个下拉菜单列出了所有用户,这使得连接过程手动。谢谢。

表格.py

class AddProfileForm(forms.ModelForm):
    name = forms.CharField(max_length=50, widget=forms.TextInput(attrs={'class': 'form-control'}))
    location = forms.CharField(max_length=100, widget=forms.TextInput(attrs={'class': 'form-control'}))
    summary = forms.CharField(max_length=500, widget=forms.Textarea(attrs={'class': 'form-control'}))
    profile_pic = forms.ImageField()
    

class Meta:
    model = GuestProfile
    fields = ('name', 'location', 'summary', 'profile_pic')

模型.py

class GuestProfile(models.Model):

user = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
location = models.CharField(max_length=100)
summary = models.TextField(max_length=350)
profile_pic = models.ImageField(null=True, blank=True, upload_to="images/")


def __str__(self):
    return str(self.user)

视图.py

class AddProfileView(CreateView):

    model = GuestProfile
    form_class = AddProfileForm
    template_name = 'profilemanip/addprofile.html'
    success_url = reverse_lazy('home')

    def get_object(self):
        return self.request.user

编辑:我最终通过将我的 AddProfileView 更改为以下内容来解决我的问题:

def AddProfileView(request,*args,**kwargs):
form = AddProfileForm(request.POST or None)
if form.is_valid():

    obj = form.save(commit=False)

    obj.user = request.user
    obj.save()

    form = AddProfileForm()

return render(request, "profilemanip/addprofile.html", {"form": form})  

标签: pythondjango

解决方案


推荐阅读