前回の続きです。
レストラン情報を格納するモデルを作成します。通常のDjangoであれば
django-admin startapp restaurants
で良いのですが、これだとrestaurantsがプロジェクトのルートディレクトリに作成されてしまします。
アプリのルートディレクトリである/rice_hacker/rice_hackerにrestaurantsフォルダ作成し、以下のコマンド実行します。
django-admin startapp restaurants ./rice_hacker/restaurants
これで作成したrestaurantsフォルダの中にmodels.pyなどのファイルが作成されます。
次にrestaurantsアプリをsettingsに追加します。
Cookiecutter-Djangoでは、settingsのファイルは複数に分かれており、rice_hacker/config/settingsに格納されています。
base.pyのLOCAL_APPSにrestaurantsを追加します。
LOCAL_APPS = [ 'rice_hacker.users.apps.UsersConfig', # Your stuff: custom apps go here 'rice_hacker.restaurants.apps.RestaurantsConfig', ]
restaurantsアプリを作成したので、models.pyを作っていきます。
from django.db import models class Country(models.Model): name = models.CharField(max_length=30,) def __str__(self): return self.name class State(models.Model): name = models.CharField(max_length=30,) country = models.ForeignKey('Country', on_delete=models.CASCADE,) def __str__(self): return self.name + ", " + self.country.name class Town(models.Model): name = models.CharField(max_length=30,) state = models.ForeignKey('State', on_delete=models.CASCADE,) def __str__(self): return self.name + ", " + self.state.name class Restaurant(models.Model): name = models.CharField(max_length=100,) desc = models.CharField(max_length=300,blank=True,) web = models.CharField(max_length=100,blank =True,) phone = models.CharField(max_length=20,blank =True,) town = models.ForeignKey('Town', on_delete=models.CASCADE,) address = models.CharField(max_length=200,) picture = models.ImageField(upload_to = 'restaurants',blank = True,) def __str__(self): return self.name class Food(models.Model): name = models.CharField(max_length=30,) picture = models.ImageField(upload_to='foods', blank=True,) restaurant = models.ForeignKey('Restaurant', on_delete=models.CASCADE,) def __str__(self): return self.name
ちなみにImageFieldのupload_to=”はアプリのルートディレクトリ下の’media’というフォルダ内を基底とします。mediaフォルダは自動で作成されないので、作っておきましょう。
その中にrestaurants,foodsフォルダを作成します。
マイグレーションを行い、databaseに登録します。
python manage.py makemigrations
python manage.py migrate