natvxei4
@natvxei4

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Djangoエラーの解決方法を教えてください

解決したいこと

”Djangoでタスク管理アプリをつくりたい! プロジェクト管理編”中の”プロジェクトの作成”を行っています。
https://qiita.com/kuma3_it/items/bbca1565a62aac0d0a63
タスクページへのリンクを行うと以下のエラーが発生しました。
解決方法を教えて下さい。

発生している問題・エラー

AttributeError at /task/
'User' object has no attribute 'use_cd'

該当しているソースコード

views.py

from django.conf import settings
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from django.views import generic
from django.contrib.sites.shortcuts import get_current_site
from django.shortcuts import redirect, resolve_url
from django.contrib.auth.decorators import login_required
from django.contrib.auth import get_user_model
from django.db import models
from .models import ProjectToUsers, Project

User = get_user_model()


""" トップページ """
class taskTop(LoginRequiredMixin, generic.TemplateView):
    template_name = 'task/task_top.html'
    redirect_field_name = 'redirect_to'

    def get_context_data(self, **kwargs):
        user = self.request.user
        context = super().get_context_data(**kwargs)

        project_user = ProjectToUsers.objects.filter(user_cd=user.use_cd)
        leader = Project.objects.filter(leader=user.use_cd, is_delete=0)

        if len(project_user) > 0:
            context['member'] = []
            for person in project_user:
                member = Project.objects.filter(project_cd=person.project_cd.pk, is_delete=0)
                context['member'].extend(member)
        else:
            context['member'] = None

        context['leader'] = leader if len(leader) > 0 else None

        return context
0

2Answer

参考にしている記事のコードが間違っていると思われます。
エラーの文言の通りUserクラスのオブジェクトに、user_cdというフィールドが存在しないため、エラーになっています。

修正前
  project_user = ProjectToUsers.objects.filter(user_cd=user.use_cd)
  leader = Project.objects.filter(leader=user.use_cd, is_delete=0)

おそらく、user_cdの打ち損じかと思いますが、そもそもuser_cdを定義してなさそうなので、user.pkに直すのがいいかと思います。

修正後
  project_user = ProjectToUsers.objects.filter(user_cd=user.pk)
  leader = Project.objects.filter(leader=user.pk, is_delete=0)
0Like

Comments

  1. @natvxei4

    Questioner

    user.pkに変更することで解決しました!
    ありがとうございます。

Comments

  1. @natvxei4

    Questioner

    models.pyに定義をしていませんでした。
    とても勉強になりました。
    解決いたしました。
    ありがとうございます!

Your answer might help someone💌