首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >未保存的用户信息

未保存的用户信息
EN

Stack Overflow用户
提问于 2020-01-17 09:53:12
回答 1查看 63关注 0票数 1

我在注册表单中创建了一个字段,询问用户到linkedin个人资料的链接。

我创建了一个页面,返回所有用户(指导者用户)的列表,并注意到我无法访问linkedin链接。我不确定是因为我没有保存链接,还是我没有正确地访问它。

这就是我在models.py上的文章

代码语言:javascript
代码运行次数:0
运行
复制
class User(AbstractUser):
    is_student = models.BooleanField(default=False)
    is_teacher = models.BooleanField(default=False)
...
class Mentor(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE,primary_key=True)
    linkedin = models.URLField(max_length=200,null=True,blank=True)

    def __str__(self):
        return "Profile of user {}".format(self.user.username)

@receiver(post_save,sender=User)
def create_or_update(sender, instance, created, **kwargs):
    if created:
        post_save.connect(create_or_update, sender=User)

forms.py

代码语言:javascript
代码运行次数:0
运行
复制
class TeacherSignUpForm(UserCreationForm):
    email = forms.EmailField(max_length=100)
    first_name = forms.CharField(max_length=100)
    last_name = forms.CharField(max_length=100)
    linkedin = forms.URLField(max_length=200)

    class Meta(UserCreationForm.Meta):
        model = User
        fields = ('email', 'username', 'first_name', 'last_name')

    def save(self, commit=True):
        self.instance.is_teacher = True
        user = super(UserCreationForm, self).save(commit=False)
        user.email = self.cleaned_data['email']
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        user.save()
        mentor = Mentor.objects.get_or_create(
            user=user,
            linkedin=self.cleaned_data['linkedin']
        )
        return user

#basic form
class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email')

views.py (teachers.py)

代码语言:javascript
代码运行次数:0
运行
复制
class TeacherSignUpView(CreateView):
    model = User
    form_class = TeacherSignUpForm
    template_name = 'registration/signup_form.html'

    def get_context_data(self, **kwargs):
        kwargs['user_type'] = 'teacher'
        return super().get_context_data(**kwargs)

    def form_valid(self, form):
        user = form.save()
        login(self.request, user)
        return redirect('teachers:app-instructor-dashboard')

students.py (视图)

代码语言:javascript
代码运行次数:0
运行
复制
#get list of mentors
def mentor_list(request):
    mentors = User.objects.filter(is_teacher=True).select_related('mentor')
    template_name = 'classroom/students/mentor_list.html'
    context = {'mentors': mentors}
    return render(request, template_name, context)

生成导师列表的html:

代码语言:javascript
代码运行次数:0
运行
复制
                  <ul id="menu-header-menu">
                      {% for user in mentors %}
                          <li><a href="{{ user.mentor.linkedin }}">{{ user.first_name }} {{ user.last_name }}</a></li>
                      {% endfor %}
                  </ul>

从这个列表中,我只得到用户的名字和姓氏,但无法获得他们的linkedin配置文件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-17 12:04:15

您在这一行中使用了mentor ( mentors = User.objects.filter(is_teacher=True).select_related('mentor') ),但没有在任何地方定义 not

表与这一行连接:

代码语言:javascript
代码运行次数:0
运行
复制
user = models.OneToOneField(User,on_delete=models.CASCADE,primary_key=True)

添加related_name .

代码语言:javascript
代码运行次数:0
运行
复制
user = models.OneToOneField(User,on_delete=models.CASCADE,primary_key=True, related_name='mentor')

然后移民和迁移(希望你是熟悉的)。其他一切都很好。

另外,打印这个来验证。

代码语言:javascript
代码运行次数:0
运行
复制
def mentor_list(request):
    mentors = User.objects.filter(is_teacher=True).select_related('mentor')
    # Edited, remember this is just for checking. this is not required
    for user in mentors:
        try:
            print(user.mentor.linkedin)
        except:
             pass
    template_name = 'classroom/students/mentor_list.html'
    context = {'mentors': mentors}
    return render(request, template_name, context)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59784935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档