为什么我不能访问Django用户的“状态”

2024-09-30 01:21:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法显示我的自定义对象“状态”。我可以填写它,并在我的管理员中看到它。但是当我试图用HTML来获取它时,它就不起作用了。但是它确实显示用户名、姓氏等。在

这是我的模型.py(账户中):

from django.contrib.auth import models as authmodels

class UserZ(authmodels.User,authmodels.PermissionsMixin):
    status = models.CharField(max_length=100, blank=True)
    avatar = models.ImageField(upload_to='images/avatar', null=True, blank=True,default='/static/img/Weramemesicon.png')

    def __str__(self):
        return self.username

在模型.py(职务)

^{2}$

html代码:

注意:{{post_user.username}}工作正确。在

{% block prepost %}
    <h1>{{post_user.username}}'s Memes</h1>
    {%if user.is_authenticated %}
        <a href="{%url 'settings'%}"><p>Einstellungen<p/></a>
    {% endif %}
    {{ post_user.status }}
{% endblock %}

我的视图.py(职务上):

class UserPosts(generic.ListView):
    model = models.Post
    template_name = "posts/user_post_list.html"
    def get_queryset(self):
        try:
            self.post_user = User.objects.prefetch_related("posts").get(
                username__iexact=self.kwargs.get("username")
            )
        except User.DoesNotExist:
            raise Http404
        else:
            return self.post_user.posts.all()

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["post_user"] = self.post_user
        return context

它应该显示:

PeterPan2's Memes

Einstellungen

Some Status

Tags: pyselftruegetreturnmodelsdefcontext
3条回答

通过继承django的内置User模型,您已经创建了一个新的模型UserZ。但是,您还没有将模型定义为AUTH_USER_MODELAUTH_USER_MODEL可能仍然是django.contrib.auth.models.User。在

您可能需要将settings.py中的默认AUTH_USER_MODEL选项更改为自定义用户模型。然后,您可以访问User对象中的status字段,就像request.user.status。但是,除非您尚未将模型定义为AUTH_USER_MODEL,否则您无法从request.user对象访问status字段。在

您的外键与User模型相关。所以.username可以工作。一件事是将外键设为UserZ或do

{{ post_user.userz.status }}

因为你的外键是给User的,不是UserZ的。在

您不应该像这样扩展用户模型。UserZ应该是AbstractUser的子类,而不是具体的User类。您还应该将AUTH_USER_MODEL设置设置为app和MODEL name-eg“用户myz.app“-你的外教不应该把重点放在课堂上。在

相关问题 更多 >

    热门问题