LoginSignup
e0429ri
@e0429ri

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!

adminサイトで作成した項目から遷移させるには?

心理テストアプリを作成中です。質問タイトルはadminで作成、質問内容はそれぞれの遷移先を作成し表示したいです。
質問タイトルから質問内容へ遷移できるようadmin内で質問タイトルの中にtemplate_name(default_quiz_template1.html、default_quiz_template2.htmlのような形式)までは構築できました。
現在は質問タイトル一覧が表示されているだけです。
このhtmlを表示させるためのvscode内記述、htmlの記述例等の解決方法を教えていただきたいです。
初めてのアプリ作成でchat GPTや解決方法を模索いたしましたが、解決に至らず質問いたしました。よろしくお願いいたします。

urls.py
from django.urls import path
from django.contrib import admin
from .views import (
QuizListView, QuizDetailView
)

app_name = 'psychology_tests'

urlpatterns = [
path('admin/', admin.site.urls),
path('quiz_list/', QuizListView.as_view(), name='quiz_list'),
path('quiz/int:pk/', QuizDetailView.as_view(), name='quiz-detail'),
]

admin.py
from django.contrib import admin
from.models import(
ProductTypes, Quiz, ProductPictures
)
class QuizAdmin(admin.ModelAdmin):
list_display = ('title', 'template_name')
fields = ('title', 'product_type', 'detail', 'template_name')

class ProductTypesAdmin(admin.ModelAdmin):
# ProductTypes用の管理設定をここに追加
pass

class ProductPicturesAdmin(admin.ModelAdmin):
# ProductPictures用の管理設定をここに追加
pass
admin.site.register(Quiz, QuizAdmin)
admin.site.register(ProductTypes, ProductTypesAdmin)
admin.site.register(ProductPictures, ProductPicturesAdmin)

views.py
class QuizDetailView(LoginRequiredMixin, DetailView):
model = Quiz
template_name = 'admin/psychology_tests/default_quiz_template.html'

def get_template_names(self):
    """
    オブジェクトに設定されたテンプレート名を使用してテンプレートを選択
    デフォルト以外のテンプレートが指定されている場合のみカスタムテンプレートを使用
    """
    if self.object.template_name != 'default_quiz_template.html':
        return [self.object.template_name]
    else:
        return ['default_quiz_template.html']

models.py
class Quiz(models.Model):
title = models.CharField(max_length=1000)
product_type = models.ForeignKey(
ProductTypes, on_delete=models.CASCADE
)
# title = models.CharField(max_length=200)
detail = models.TextField()
template_name = models.CharField(max_length=100, default='default_quiz_template.html') # デフォルトテンプレート名

class Meta:
    db_table = 'quiz'

def __str__(self):
    return self.title

default_quiz_template1.html(このような遷移先を表示したいと考えているサンプルです)
{% extends 'base.html' %}
{% block content %}

散歩中に見つけたものは?

1.石

1.石を選んだあなたは・・・

{% endblock %}
0

No Answers yet.

Your answer might help someone💌