使用 is_authenticated 与用户使用 OneToOneField 关系

Use is_authenticated using OneToOneField relation with User

我已经构建了一个模型,它与 Django 中的用户对象具有 OneToOne 关系,如下所示:

class Student(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)

但在 HTML 文件中,过滤器 {% if user.student.is_authenticated %} 不起作用,但过滤器 {% if user.is_authenticated %} 起作用。我认为学生 class 继承了用户 class 的属性。

是否有其他可能从用户 class 创建自定义用户并可能使用 {% if user.student.is_authenticated %} ?我也想有可能使用例如 {% if user.teacher.is_authenticated %}.

I thought that the Student class inherits the attributes from the User class.

,它不继承,这只是两个模型(表),其中一个表通过指定主键引用其他表。

因此您可以通过以下方式检查:

{% if <b>user.is_authenticated</b> %}
    …
{% endif %}

或者如果您想知道 student 的用户是否经过身份验证,您可以使用:

{% if <b><i>mystudent</i>.user.is_authenticated</b> %}
    …
{% endif %}