演習課題「記事の保存機能を作る」
右の環境には、「myblog」プロジェクトに「news」というアプリケーションが作成してあります。また、プロジェクトとnewsアプリのルーティングは、以下のアクセスが可能になるよう設定してあります。
news/
news/(id)
news/create
news/(id)/update
models.pyを修正して、新規作成と編集のフォームの情報を保存するようにmodels.pyを修正してください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
#09:投稿フォームの保存機能を作ろう
ここでは、お店情報の投稿フォームの保存機能を作ります。すでに、投稿フォームを作ったので、一覧ページと詳細ページから、このフォームを呼び出すようにして、データの保存機能を完成させます。
reverse関数は、ビューの名前から、リダイレクト先のURLを調べる関数です。このおかげで、モデルやビューの中でルートを直接記述しなくても済みます。
myapp/lunchmap/templates/lunchmap/shop_list.html<div>
<a href='{% url "lunchmap:create" %}'>新しいお店</a>
</div>
myapp/lunchmap/templates/lunchmap/shop_detail.html<div>
<a href='{% url "lunchmap:index" %}'>一覧</a> |
<a href='{% url "lunchmap:update" shop.pk %}'>編集</a> |
</div>
myapp/lunchmap/models.pyfrom django.db import models
from django.urls import reverse
class Category(models.Model):
name = models.CharField(max_length=255)
author = models.ForeignKey(
'auth.User',
on_delete=models.CASCADE,
)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
class Shop(models.Model):
name = models.CharField(max_length=255)
address = models.TextField(blank=True)
author = models.ForeignKey(
'auth.User',
on_delete=models.CASCADE,
)
category = models.ForeignKey(
Category, on_delete=models.PROTECT)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('lunchmap:detail', kwargs={'pk': self.pk})
- はじめての Django アプリ作成、その 4 | Django documentation | Django
https://docs.djangoproject.com/ja/2.1/intro/tutorial04/
- reverseを使って関数のURLを取得する - 日記
https://tnamao.hatenablog.com/entry/20100403/1270308534
- DjangoでのURL⇔view関数の正引き・逆引き - orangain flavor
https://orangain.hatenablog.com/entry/20080823/1219329846