members/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
pass
post/models.py
from django.db import models
from members.models import User
class Post(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.TextField(blank=True)
like_users = models.ManyToManyField(
User,
related_name='like_post_set')
created = models.DateTimeField(auto_now_add=True)
class PostImage(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
image = models.ImageField(upload_to='posts/images')
class PostComment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.TextField()
class PostLike(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
uploaded_to
settings.py
# User-uploaded static files의 기본 경로
MEDIA_ROOT = os.path.join(ROOT_DIR, 'media')
MEDIA_URL = '/media/'
$ pip install pillow
urls.py
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
urlpatterns += static(
# URL 앞부분의 /media/이면
prefix='/media/',
# document_root위치에서 나머지 path에 해당하는 파일을 리턴
document_root=settings.MEDIA_ROOT,
)
HTTP Scheme + HOST+ MEDIA_URL + FileField의 실제 값
https:// + localhost:8000 + /media/ + posts/images/xxx.jpg
참고