Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 显示外键值_Python_Django - Fatal编程技术网

Python 显示外键值

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

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.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)
因此,当前my
OrderItem
模型中的
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
函数返回此变量。