質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.13%

SyntaxError: keyword can't be an expressionのエラー

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 4,820

shirasu10fish

score 31

 前提・実現したいこと

Djangoを用いてWEBサイトを制作しています。
下記のようなコードを作成したところ、エラーが発生しました。
どこを修正すればよいかご教授ください。

 エラーメッセージ

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f4fb6b316a8>
Traceback (most recent call last):
  File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/core/management/commands/runserver.py", line 120, in inner_run
    self.check(display_num_errors=True)
  File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/core/management/base.py", line 364, in check
    include_deployment_checks=include_deployment_checks,
  File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/core/management/base.py", line 351, in _run_checks
    return checks.run_checks(**kwargs)
  File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/core/checks/registry.py", line 73, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/core/checks/urls.py", line 13, in check_url_config
    return check_resolver(resolver)
  File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/core/checks/urls.py", line 23, in check_resolver
    return check_method()
  File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/urls/resolvers.py", line 397, in check
    for pattern in self.url_patterns:
  File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/utils/functional.py", line 36, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/urls/resolvers.py", line 536, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/utils/functional.py", line 36, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/urls/resolvers.py", line 529, in urlconf_module
    return import_module(self.urlconf_name)
  File "/home/kei/.virtualenvs/nextone/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 665, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/opt/webapps/nextone/nextone/urls.py", line 12, in <module>
    import users.views
  File "/opt/webapps/nextone/users/views.py", line 18
    question_D = question.objects.filter(Profile_A.user=request.user)
                                         ^
SyntaxError: keyword can't be an expression

 views.pyの内容

from django.shortcuts import render, redirect
from .forms import ProfileForm, UserCreateForm

from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required


from .models import Profile_A
from qa.models import question


@login_required
def mypage(request):
    Profile_A_D = Profile_A.objects.get(user=request.user)
    question_D = question.objects.filter(Profile_A.user=request.user)

    return render(request, 'users/mypage.html', {"Profile_A_D":Profile_A_D})

users.models.py

from django.contrib.auth.models import User
from django.db import models

from django.conf import settings 

class Profile_A(models.Model):
    name = models.CharField('ハンドルネーム', max_length=255)
    birthday = models.DateField('生年月日')
    mysite = models.URLField('URLなど')#,required=False)

    user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)

    def __str__(self):
        return self.name

qa.models.py

class question(models.Model):
    urltype_choice = (
        ('hoge1','hogehoge1'),
        ('hoge2', 'hogehoge2')
    )

    title = models.CharField('タイトル', max_length=100)
    pageurl = models.CharField('URL', max_length=100)
    urltype = models.CharField('タイプ', choices = urltype_choice, max_length=100)
    text = models.TextField('本文')
    user = models.ForeignKey(Profile_A, "on_delete")

    published_date = models.DateTimeField(
            blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

端折った解答をしますと、 views.py の以下行だけでは、データが何も入っていないのではないかと思いました。

question_D = question.objects.filter(Profile_A.user=request.user)

ですので、試しに動かす文には、 question_D に以下のような具合でデータを入れてはいかがでしょう。(「インスタンスを作る」工程が抜けているとも言えます)

question_D = question(title="テストです", pageurl="http://example.com", urltype=urltype_choice.nanika,text="ローレンイプサム", user=jonhdoe)
question_D = question.objects.filter(Profile_A.user=request.user)

ちなみに、私はDjango詳しくないので、参考程度にとどめていただければと思います。

 参考資料

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る