首页 > 解决方案 > 从 django 中的子模型访问父模型属性

问题描述

请任何人都可以帮我解决我想访问我在OrderItem模型中引用的项目模型中的项目,但我试图从 Order 模型访问项目这里是模型这里是用于访问的模型

class Order(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
    ref_code = models.CharField(max_length=20)
    items = models.ManyToManyField(OrderItem)
    start_date = models.DateTimeField(auto_now_add=True)
    order_date = models.DateTimeField()
    ordered = models.BooleanField(default=False)
    shipping_address = models.ForeignKey('Address',on_delete=models.SET_NULL,related_name='shipping_address',blank=True,null=True)
    payment = models.ForeignKey('Payment',on_delete=models.SET_NULL,blank=True,null=True)
    being_delivered = models.BooleanField(default=False)
    received = models.BooleanField(default=False)
    refund_requested = models.BooleanField(default=False)
    refund_granted = models.BooleanField(default=False)

这是我要访问的父模型

class OrderItem(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
    ordered_order = models.BooleanField(default=False)
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)

并且我试图访问的项目必须在这个模型中

class Item(models.Model):
    title = models.CharField(max_length=100)
    price = models.IntegerField()
    discount_price = models.IntegerField(blank=True, null=True)
    category = models.ForeignKey(Categories, on_delete=models.DO_NOTHING)
    tags = models.ManyToManyField(Tags, related_name='itemTags')
    slug = models.SlugField(max_length=200, unique=True)
    size = models.CharField(blank=True, null=True, max_length=5)
    model = models.CharField(max_length=100, blank=True, null=True)
    description = models.TextField()
    quantity = models.IntegerField(default=1)
    image = models.ImageField()
    color = models.CharField(max_length=100, blank=True, null=True)
    brand = models.CharField(max_length=100, blank=True, null=True)
    Display = models.DecimalField(max_digits=100,
                                  decimal_places=1,
                                  blank=True,
                                  null=True)
    ram = models.CharField(max_length=100, blank=True, null=True)
    material = models.CharField(max_length=100, blank=True, null=True)
    hdd = models.CharField(max_length=100, blank=True, null=True)
    size = models.CharField(max_length=100, blank=True, null=True)
    lens = models.CharField(max_length=100, blank=True, null=True)
    created_at = models.DateField(auto_now_add=True)

我正在尝试这个,但似乎不起作用

recent_orders=Order.objects.filter(user=2)
 for item in recent_orders:
     print(item.items.item.title)

任何人都可以帮帮我好吗!!!

标签: pythondjango

解决方案


你需要这个代码:

recent_orders=Order.objects.filter(user=2)
for order in recent_orders:
    for order_item in order.items:
        print(order_item.item.title)

尝试为所有变量赋予不同的名称,这将使编程更有效


推荐阅读