1 from django.db import models
3 class Area(models.Model):
4 name = models.CharField(max_length=64)
5 notes = models.TextField(blank=True, null=True)
10 class Crag(models.Model):
11 area = models.ForeignKey(
13 on_delete=models.CASCADE,
16 name = models.CharField(max_length=64)
17 notes = models.TextField(blank=True, null=True)
22 class Route(models.Model):
23 area = models.ForeignKey(
25 on_delete=models.CASCADE,
26 related_name='routes',
28 name = models.CharField(max_length=64)
29 notes = models.TextField(blank=True, null=True)
34 ROUTE_DIFFICULTY_CHOICES = (
84 class Pitch(models.Model):
85 route = models.ForeignKey(
87 on_delete=models.CASCADE,
88 related_name='pitches',
90 name = models.CharField(max_length=64, null=True)
91 difficulty = models.CharField(max_length=5, choices=ROUTE_DIFFICULTY_CHOICES)
92 safety = models.CharField(max_length=4, choices=SAFETY_CHOICES)
93 notes = models.TextField(blank=True, null=True)
97 return '{} ({})'.format(self.name, self.difficulty)
98 return 'Pitch ({})'.format(self.difficulty)
100 class Cluster(models.Model):
101 area = models.ForeignKey(
103 on_delete=models.CASCADE,
104 related_name='clusters',
106 name = models.CharField(max_length=64)
107 notes = models.TextField(blank=True, null=True)
112 class Boulder(models.Model):
113 cluster = models.ForeignKey(
115 on_delete=models.CASCADE,
116 related_name='boulders',
118 name = models.CharField(max_length=64)
119 notes = models.TextField(blank=True, null=True)
124 BOULDER_DIFFICULTY_CHOICES = (
145 class Problem(models.Model):
146 boulder = models.ForeignKey(
148 on_delete=models.CASCADE,
149 related_name='problems',
151 name = models.CharField(max_length=64)
152 difficulty = models.CharField(max_length=3, choices=BOULDER_DIFFICULTY_CHOICES)
153 safety = models.CharField(max_length=4, choices=SAFETY_CHOICES)
154 notes = models.TextField(blank=True, null=True)
157 return '{} ({})'.format(self.name, self.difficulty)