Python 显示外键值
My models.py的外观如下:Python 显示外键值,python,django,Python,Django,My models.py的外观如下: class Order(models.Model): items = models.ManyToManyField(OrderItem) class OrderItem(models.Model): (item in the cart) item = models.ForeignKey(Item, on_delete=models.CASCADE) class Item(models.Model): title = models.C
class Order(models.Model):
items = models.ManyToManyField(OrderItem)
class OrderItem(models.Model): (item in the cart)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
class Item(models.Model):
title = models.CharField(max_length=100)
price = models.FloatField()
discount_price = models.FloatField(blank=True, null=True)
label = models.ManyToManyField(Label, blank=True)
slug = models.SlugField(unique=True)
description = models.TextField()
class Bike(models.Model):
item = models.OneToOneField(Item, on_delete=models.CASCADE)
brand = models.ManyToManyField(Brand)
size = models.ManyToManyField(Size, blank=True)
class Accessory(models.Model):
item = models.OneToOneField(Item, on_delete=models.CASCADE)
brand_accessory = models.ManyToManyField(BrandAccessory)
因此,当前myOrderItem
模型中的item
字段显示了item
模型中项目的标题和数量:
def __str__(self):
return f"{self.quantity} of {self.item.title}"
项目
与OneToOneField
连接,带有自行车
和附件
。
如果将自行车
添加到订购项目
中,并且如果将附件
添加到订购项目
中,是否可以显示自行车的品牌和尺寸
它看起来像{quantity}{item.title}(if bike)>{bike.brand}{bike.size}(if association)>{association.brand_association}你可以用它来检查你的项目
是否有一个你需要的字段
class OrderItem(models.Model):
...
def __str__(self):
if hasattr(self.item, 'bike'):
#get value you need like: self.item.bike.brand
if hasattr(self.item, 'accessory'):
#get value you need like: self.item.accessory.brand_accessory
return #get values you need together
您可以使用检查您的项目
是否在您需要的字段中找到一个
class OrderItem(models.Model):
...
def __str__(self):
if hasattr(self.item, 'bike'):
#get value you need like: self.item.bike.brand
if hasattr(self.item, 'accessory'):
#get value you need like: self.item.accessory.brand_accessory
return #get values you need together
我是否在if语句中构造我的\uuu str\uuu()
?我得到了一个错误,self
没有定义我已经尝试过如果hasattr(项目,'bike'),但它不起作用。您是否向str参数添加了self
<代码>定义(自我):
。If语句应该在\uuu str\uu
函数中。是否在If语句中返回值?如何显示组合在一起的值?您可以创建字符串变量,将其中的值连接到if语句中,并在最后返回此变量作为\uuuu str\uuu
函数的结果。我是否在if语句中构造\uu str\uuu()
?我得到了一个错误,self
没有定义我已经尝试过如果hasattr(项目,'bike'),但它不起作用。您是否向str参数添加了self
<代码>定义(自我):。If语句应该在\uuu str\uu
函数中。是否在If语句中返回值?如何显示组合在一起的值?您可以将字符串变为变量,将其中的值连接到if语句中,并在最后通过\uuu str\uu
函数返回此变量。