### アプリケーションの作成
$ python manage.py startapp sns
– settingsにアプリケーション名を追加
/django_app/settings.py
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'hello', 'sns', ]
### アプリケーションの設計
– 機能の洗い出し
– データベース設計
– 各ページの設計
### モデルの作成
– テーブルはUser, Message, Group, Friend, Good
– Message: owner(投稿者), group, content, share_id, good_count, share_count, pub_date
– Group: owner, title
– Friend: owner, user, group
– Good: owner, message
/sns/models.py
from django.db import models from django.contrib.auth.models import User # Message class Message(models.Model): owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name='message_owner') group = models.ForeignKey('Group', on_delete=models.CASCADE) content = models.TextField(max_length=1000) share_id = models.IntegerField(default=-1) good_count = models.IntegerField(default=0) pub_date = models.DateTimeField(auto_now_add=True) def __str__(self): return str(self.content) + ' (' + str(self.owner) + ')' class Meta: ordering = ('-pub_date',) # Group class Group(models.Model): owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name='group_owner') title = models.CharField(max_length=100) def __str__(self): return '<' + self.title + '(' + str(self.owner) + ')>' # Friend class Friend(models.Model): owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name='friend_owner') user = models.ForeignKey(User, on_delete=models.CASCADE) group = models.ForeignKey(Group, on_delete=models.CASCADE) def __str__(self): return str(self.user) + ' (group:"' + str(self.group) + '")' # Good class Good(models.Model): owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name='good_owner') message = models.ForeignKey(Message, on_delete=models.CASCADE) def __str__(self): return 'good for "' + str(self.message) + '" (by' + str(self.owner) + ')'
– -pub_dateはpub_dateの大きい順
### マイグレーション
$ python manage.py makemigrations sns
$ python manage.py migrate
### admin.py
/sns/admin.py
from django.contrib import admin from .models import Message, Friend, Group, Good admin.site.register(Message) admin.site.register(Friend) admin.site.register(Group) admin.site.register(Good)
$ python manage.py runserver 192.168.33.10:8000
– AddUserからpublicユーザの作成
– ユーザ作成
– publicグループを用意