官术网_书友最值得收藏!

Django models

We can now take a look at how these normalized tables can be represented as Django models. Composite keys are not directly supported in Django. The solution used here is to apply the surrogate keys and specify the unique_together property in the Meta class:

class Origin(models.Model): 
    superhero = models.ForeignKey( 
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 
    origin = models.CharField(max_length=100) 
 
    def __str__(self): 
        return "{}'s orgin: {}".format(self.superhero, self.origin) 
 
 
class Location(models.Model): 
    latitude = models.FloatField() 
    longitude = models.FloatField() 
    country = models.CharField(max_length=100) 
 
    def __str__(self): 
        return "{}: ({}, {})".format(self.country, 
                                     self.latitude, self.longitude) 
 
    class Meta: 
        unique_together = ("latitude", "longitude") 
 
 
class Sighting(models.Model): 
    superhero = models.ForeignKey( 
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 
    power = models.CharField(max_length=100) 
    location = models.ForeignKey(Location, on_delete=models.CASCADE) 
    sighted_on = models.DateTimeField() 
 
    def __str__(self): 
        return "{}'s power {} sighted at: {} on {}".format( 
            self.superhero, 
            self.power, 
            self.location.country, 
            self.sighted_on) 
 
    class Meta: 
        unique_together = ("superhero", "power") 
主站蜘蛛池模板: 潜江市| 塘沽区| 吉安县| 瑞金市| 古蔺县| 北川| 松原市| 米易县| 灵宝市| 华蓥市| 巴林左旗| 永川市| 仪征市| 正安县| 锡林浩特市| 龙江县| 阿拉善右旗| 襄城县| 东方市| 纳雍县| 麦盖提县| 新龙县| 潮安县| 正蓝旗| 司法| 饶河县| 乌兰察布市| 准格尔旗| 都匀市| 光泽县| 东至县| 白山市| 稻城县| 黄浦区| 赫章县| 伊通| 竹溪县| 陇南市| 化德县| 巴林左旗| 田东县|