오늘 한 것 중 기억하고 싶은 것들!
- models.py만들고 push&pull
- csv파일 만들기
1.1 in orders app
user = models.ForeignKey("users.User", on_delete=models.CASCADE)
status = models.ForeignKey("Status", on_delete=models.CASCADE)
1.2 created_at = models.DateTimeField(auto_now=True)
auto_now 는 최종 수정일자
auto_now_add 는 첫 작성일자
1.3 price = models.DecimalField(max_digits=13, decimal_places=3)
DecimalField는 max_digits랑 decimal_places를 둘 다 넣어줘야함!
총 13자릿수 중에서 3자릿수가 소수점 뒷부분!
1.4 User - UserCoupon - Coupon
UserCoupon이 중간테이블!
coupon = models.ManyToManyField("Coupon", through="UserCoupon", null=True) -> User테이블에 이렇게 ManyToMany를 표현해주면됨!
1.5 python manage.py makemigrations
python manage.py migrate
1.6 git rebase?
git add .
git commit (작성하고)
git rebase -i main(여기서 pick-s를 통해 commit을 통합해주고 하나의 commit만 남겨주기!)
git push origin feature/eunhye20 -f
1.7 related_name
departure_location = models.ForeignKey("Location", on_delete=models.CASCADE, related_name='departure')
arrival_location = models.ForeignKey("Location", on_delete=models.CASCADE, related_name='arrival')
2.1. manage.py에 .csv확장자로 테이블별로 파일을 만들어주기. 띄어쓰기 없애기!(중요)
2.2 db_uploader.py라고 manage.py있는 곳에 만들어 주기. 만들때 어떤 테이블을 참조하고 있을 때는 꼭 objects를 불러와서 로직을 구성해주어야함.
for row in data_reader:
departure_location = Location.objects.get(name=row[0])
arrival_location = Location.objects.get(name=row[1])
departure_time = datetime.datetime.strptime(row[2], "%H:%M")
arrival_time = datetime.datetime.strptime(row[3], "%H:%M")
taxi_company = TaxiCompany.objects.get(id=row[4])
update, create = Course.objects.update_or_create(
departure_location=departure_location,
arrival_location=arrival_location,
departure_time=departure_time,
arrival_time=arrival_time,
taxi_company=taxi_company,
taxi_code=row[5])
2.3 db_uploader.py에 csv 파일 넣어주기.
2.4 작동할 때는, manage.py있는 곳에 python ./db_uploader.py를 작동해서 mysql에 반영되었는지 확인해주기.
warnings.warn("DateTimeField %s received a naive datetime (%s)"
/Users/eunhyepark/miniconda3/envs/wattataxi/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1416: RuntimeWarning: DateTimeField Course.departure_time received a naive datetime (1900-01-01 20:00:00) while time zone support is active.
warnings.warn("DateTimeField %s received a naive datetime (%s)"
TIME_ZONE = 'Asia/Seoul'
USE_I18N = False
USE_L10N = False
USE_TZ = False
요렇게 바꿔주기!
3.2 db 에러, sql에러
drop database wattataxi;
드롭 후 다시 깔고 새롭게 시작 ^^