apps.park.models의 소스 코드

from apps.core.models import DeletableModel, TimeStampModel
from apps.user.models import User
from django.db import models
from django.db.models import Avg
from django.db.models.deletion import CASCADE, DO_NOTHING
from django.db.models.fields.related import ForeignKey


[문서]class Park(models.Model): @property def average_rating(self) -> float: avg_score = self.review_park.aggregate(Avg("score"))["score__avg"] return round(avg_score, 1) if avg_score else 0.0 @property def count_reviews(self): return self.review_park.count() park_name = models.CharField(max_length=50, unique=True, verbose_name="공원이름") gu_id = models.IntegerField(verbose_name="구ID") full_address = models.TextField(verbose_name="주소") si_address = models.CharField(max_length=50, verbose_name="시") gu_address = models.CharField(max_length=50, verbose_name="구") dong_address = models.CharField(max_length=50, verbose_name="동") latitude = models.CharField(max_length=50, verbose_name="위도(lat)") longitude = models.CharField( max_length=50, verbose_name="경도(long)", ) park_image = models.ImageField(blank=True, verbose_name="공원사진") nearby_parks = models.ManyToManyField("self") class Meta: ordering = ["park_name"] def __str__(self): return self.park_name
[문서]class Equipment(models.Model): equipment_name = models.CharField( max_length=50, unique=True, verbose_name="운동기구 이름" ) equipment_type = models.CharField(max_length=50, verbose_name="운동기구 유형") def __str__(self): return self.equipment_name
[문서]class ParkEquipment(models.Model): park_id = models.ForeignKey( Park, on_delete=models.CASCADE, related_name="park_equipments", db_column="park_id", verbose_name="공원 ID", ) equipment_id = models.ForeignKey( Equipment, on_delete=models.CASCADE, related_name="park", db_column="equipment_parks", verbose_name="운동시설 ID", ) quantity = models.IntegerField(default=0, verbose_name="수량") class Meta: ordering = ["park_id"]
[문서]class Review(TimeStampModel, DeletableModel): user_id = ForeignKey( User, on_delete=DO_NOTHING, related_name="review_user", db_column="user_id", verbose_name="유저 ID", ) park_id = ForeignKey( Park, on_delete=CASCADE, related_name="review_park", db_column="park_id", verbose_name="공원 ID", ) content = models.CharField(max_length=255, verbose_name="내용") score = models.IntegerField(verbose_name="평점") def __str__(self): return str(self.id)