通过多个外键检索对象的 属性
Retrieve property of an object through multiple foreignkeys
我正在学习 Django 并且我链接了不同的 classes Archipel -> Island -> Community 以本地化要在网站上发布的项目(社区只属于一个 Island,它只属于 ton一个群岛)。也许我做错了,但这是我的编码方式:
#models.py
class Archipel(models.Model):
"""docstring for Archipel."""
archipel_name = models.CharField(max_length=200)
def __str__(self):
return self.archipel_name
class Island(models.Model):
"""docstring for Archipel."""
archipel = models.ForeignKey(Archipel, on_delete=models.CASCADE)
island_name = models.CharField(max_length=200)
def __str__(self):
return self.island_name
class Community(models.Model):
"""docstring for Archipel."""
island = models.ForeignKey(Island, on_delete=models.CASCADE)
community_name = models.CharField(max_length=200)
community_zipcode = models.IntegerField(default=98700)
def __str__(self):
return self.community_name
在下面的class中,借助外键,我可以轻松获取产品的社区名称:
class Product(models.Model):
community = models.ForeignKey(Community, on_delete=models.CASCADE)
island = # community->island
archipelago = # community->island->archipelago
Product_title = models.CharField(max_length=200)
Product_text = models.TextField()
Product_price = models.IntegerField(default=0)
Product_visible = models.BooleanField(default=False)
pub_date = models.DateTimeField('date published')
如何取回我的产品的 island_name 和群岛 属性?
我试过了
island = Community.select_related('island').get()
但它 returns 我是所有岛屿的查询集。
所以我尝试了 "community" 但 Django 回答说 ForeignKey 对象没有 slelect_related 对象。
您可以使用点符号来做到这一点。假设你有 product
个对象,那么你可以这样做
island_name = product.commuinty.island.island_name
archipel_name = product.commuinty.island.archipel.archipel_name
我正在学习 Django 并且我链接了不同的 classes Archipel -> Island -> Community 以本地化要在网站上发布的项目(社区只属于一个 Island,它只属于 ton一个群岛)。也许我做错了,但这是我的编码方式:
#models.py
class Archipel(models.Model):
"""docstring for Archipel."""
archipel_name = models.CharField(max_length=200)
def __str__(self):
return self.archipel_name
class Island(models.Model):
"""docstring for Archipel."""
archipel = models.ForeignKey(Archipel, on_delete=models.CASCADE)
island_name = models.CharField(max_length=200)
def __str__(self):
return self.island_name
class Community(models.Model):
"""docstring for Archipel."""
island = models.ForeignKey(Island, on_delete=models.CASCADE)
community_name = models.CharField(max_length=200)
community_zipcode = models.IntegerField(default=98700)
def __str__(self):
return self.community_name
在下面的class中,借助外键,我可以轻松获取产品的社区名称:
class Product(models.Model):
community = models.ForeignKey(Community, on_delete=models.CASCADE)
island = # community->island
archipelago = # community->island->archipelago
Product_title = models.CharField(max_length=200)
Product_text = models.TextField()
Product_price = models.IntegerField(default=0)
Product_visible = models.BooleanField(default=False)
pub_date = models.DateTimeField('date published')
如何取回我的产品的 island_name 和群岛 属性? 我试过了
island = Community.select_related('island').get()
但它 returns 我是所有岛屿的查询集。 所以我尝试了 "community" 但 Django 回答说 ForeignKey 对象没有 slelect_related 对象。
您可以使用点符号来做到这一点。假设你有 product
个对象,那么你可以这样做
island_name = product.commuinty.island.island_name
archipel_name = product.commuinty.island.archipel.archipel_name