在Django模型中访问ForeignKey实例字段

3 投票
2 回答
3908 浏览
提问于 2025-04-18 08:00

我在用Django运行一个数据库查询时遇到了一些困难,特别是我想要把查询结果可视化。假设我定义了几个简单的模型:

class Pizza(models.Model):
    name = models.CharField()
    ...

class Topping(models.Model):
    pizza = models.ForeignKey('pizza')
    # Get the name of pizza here

补充一下:我需要在另一个字段中访问名字,而不是在实例方法里。这可能吗?

我现在不知道该怎么做。我试过

pizza.name

但没有成功。任何建议都会非常感谢。

2 个回答

1

要获取一个相关字段的值,你需要一个模型实例,也就是在你这个例子中需要一个 Topping 类的实例。比如,你可以在 Topping 类上定义一个自定义的方法:

class Topping(models.Model):
    pizza = models.ForeignKey('pizza')

    def get_pizza_name(self):
        return self.pizza.name

这里的 self 指的是这个类的一个实例。

使用示例:

topping = Topping.objects.get(pk=1)
print topping.get_pizza_name()
1

简单来说:

topping = Topping.objects.get(pk=1)
print(topping.pizza.name)

撰写回答