Django 인스타그램 글에 기간 설정하기

2022. 2. 21. 18:00카테고리 없음

반응형

출처 : https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9E%A5%EA%B3%A0-%EC%9B%B9%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard

 

장고(Django)를 배우기 시작한 입문자이시거나, 또는 배우고 싶은 생각이 있으신 분은 위 출처의 강의를 적극 추천드립니다!!!

 


 

Django 인스타그램 포스팅 글에 기간 설정하기

#insta/models.py

 

    # auto_now_add 는 생성 시간이 자동으로 DB에 저장된다.
    created_at = models.DateField(auto_now_add=True)
    # auto_now는 수정 시간이 DB에 자동으로 저장된다.
    updated_at = models.DateField(auto_now=True)

# 생성 시각 필드를 만들어준다.

 

_ 위 필드들과 같이 매번 모델에 들어가는 필드들이면 부모 추상 클래스를 통해서 코드 작성 시간을 줄일 수 있다.

class BaseModel(models.Model):

    class Meta:
        # 아래 코드를 통해 실제 DB에 적용되지 않고, 추상 클래스로 만들어진다.
        abstract = True

class Post(BaseModel):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    photo = models.ImageField(upload_to="insta/post/%Y%m%d")
    # 내용
    caption = models.TextField()
    tag_set = models.ManyToManyField('Tag', blank=True)
    location = models.CharField(max_length=100) 
    created_at = models.DateField(auto_now_add=True)
    updated_at = models.DateField(auto_now=True)

 


 

_후 Terminal에서 아래와 같이 필수 필드 여부에 대해서 작성해준다.

(django_instagram) C:\django_instagram>python manage.py makemigrations insta
You are trying to add the field 'created_at' with 'auto_now_add=True' to post without a default; the database needs something to populate existing rows.

 1) Provide a one-off default now (will be set on all existing rows)
 2) Quit, and let me add a default in models.py
Select an option: 1
Please enter the default value now, as valid Python
You can accept the default 'timezone.now' by pressing 'Enter' or you can provide another value.
The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now
Type 'exit' to exit this prompt
[default: timezone.now] >>> timezone.now
Migrations for 'insta':
  insta\migrations\0004_auto_20220221_1747.py
    - Add field created_at to post
    - Add field updated_at to post

# timezone.now를 default 값으로 넣어준다는 의미이다.

 


#insta/views.py

from datetime import timedelta
from django.utils import timezone

@login_required
def index(request):
    # 현재를 기준으로 3일 이내라면
    timesince = timezone.now() - timedelta(days=3)

    # TimeLine에 Follow하는 유저들의 포스팅 만을 노출하기
    post_list = Post.objects.all()\
        .filter( 
            Q(author=request.user) | 
            Q(author__in=request.user.following_set.all())
            )\
        .filter(
            created_at__lte = timesince # 3일 이내의 게시글
            #created_at__gte = timesince # 3일 이외의 게시글
        )

 

 

https://velog.io/@may_soouu/Django-%EB%A9%94%EC%86%8C%EB%93%9C-%EC%A0%95%EB%A6%AC

 

🏃🏼 Django 메소드 정리

장고의 메소드에 대해 정리해보자일치하는 조건을 입력할 때 사용언더바 두개 (\_\_)\-조건을 사용할 경우 \-외부 모델 필드를 사용할 경우 부분 일치 조건 입력할 때 사용여러 조건을 포함할 경

velog.io

 

 

https://www.slideshare.net/EunhyangKim2/ss-118560530

 

Django의 배신(주니어 개발자의 Django 삽질기)

Dev Django Korea 2018에서 발표한 자료입니다. 주니어 개발자가 Django로 개발하며 삽질한 내용을 담았습니다.

www.slideshare.net

 

반응형