本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:幽默盒子,一个专注于搞笑,分享快乐的公众号

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Django 用户特定变量未在后端更新

发布于2021-07-25 11:08     阅读(1049)     评论(0)     点赞(27)     收藏(5)



我有一组预先存在的团队,用户可以在 /jointeam 上加入 [team1, team2, team3],这将显示在 /home 上。

我的问题是,即使在用户成功加入团队之后,Profile 中的变量“user_team”仍为“None”。

换句话说,如果我在 /jointeam 上输入“ team1 ”,我希望它将其分配给user.profile.user_group

提前致谢,感谢您的投入!

这是我的代码:

模型.py

#used to create a team
class TeamCreation(models.Model):

    team_name = models.CharField(max_length=100, default=None, unique=True)
[...]
    def __str__(self):
        return self.team_name

#user-specific
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    user_team = models.CharField(max_length=30, null=True)
[...]
    def __str__(self):
        return f'{self.user.username} Profile'

    def save(self, *args, **kwargs):
        super(Profile, self).save(*args, **kwargs)

#model to join a team
class Join(models.Model):

    team_name = models.CharField(max_length=100, default=None, unique=False)

    def __str__(self):
        return self.team_name

表单.py

class UserUpdateForm(forms.ModelForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username','email']

class TeamCreationForm(forms.ModelForm):
    class Meta:
        model = TeamCreation
        fields=['team_name']

class JoinForm(forms.ModelForm):
    class Meta:
        model = Join
        fields=['team_name']

views.py - 用户

[...]
@login_required
def join_team(request):
        form_class = JoinForm
        form_join = form_class(request.POST or None)      
        user = request.user

        if request.method=='POST':


            if form_join.is_valid():
                newJoin = form_join.save(commit=False)

                if not TeamCreation.objects.filter(team_name=newJoin.team_name).exists():
                    print("nope")
                    return redirect('dashboard')
                    messages.error("Team doesn't exist or incorrect key")

                else:
                    print("exist")

                    group_name=newJoin.team_name            

                    user.profile.user_team=group_name


                    newJoin.save()

                    return redirect('dashboard')



            else:
                print("Error")

        context={
                "form":form_join,
                }

        return render(request, "pages/join_team.html", context)

@login_required
def home(request):

    user = request.user
    group_name=user.profile.user_team

    context={
            "user_group":group_name,
            }

    return render(request,'pages/dashboard.html', context)    

主页.html

[...]                                                                         
{% if user_team %}

<option>{{ user_team }}</option>
                                                                                                                                                            <option>Join a team</option>

<option>Create a team</option>

{% else %}

<option>-- none</option>
                                                                                                                                                           <option>Join a team</option>

<option>Create a team</option>

{% endif %}
[...]

解决方案


您需要在更新后保存配置文件。

group_name = newJoin.team_name
newJoin.save()
user.profile.user_team = group_name
user.profile.save()

在创建连接实例后保存配置文件可能是一个更好的主意,以防它失败。






所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1005973/38d2a156c21d96741f2c/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

27 0
收藏该文
已收藏

评论内容:(最多支持255个字符)