首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示外键值

问显示外键值
EN

Stack Overflow用户
提问于 2020-04-27 16:24:37
回答 1查看 52关注 0票数 0

我的models.py是这样的:

代码语言:javascript
复制
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)

因此,目前我的OrderItem模型中的字段item显示了Item模型中项目的标题和数量:

代码语言:javascript
复制
def __str__(self):
    return f"{self.quantity} of {self.item.title}"

Item通过Bike和Accessory与OneToOneField相连。如果将Bike添加到OrderItem和brand_accessory,如果将Accessory添加到OrderItem,是否可以显示其品牌和大小

它看起来像{item.title} {item.title}(如果是自行车)> {bike.brand} {bike.size} (如果是附件)> {accessory.brand_accessory}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-27 16:43:21

您可以使用hasattr检查您的item是否获得了所需的OneToOneField

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61454561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档