演習課題「記事の保存機能を作る」
右の環境には、「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