从具有外键的模型中检索数据

时间:2018-12-07 23:48:14

标签: python django

我对使用ForeignKeys从另一个模型获取数据有疑问。我有一个模型的推销员

class Salesman(models.Model):
    name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    store = models.ForeignKey(Store, on_delete=models.CASCADE)

def __str__(self):
    return "%s" % (self.name)

商店型号

class Store (models.Model):
    name= models.CharField(max_length=50)
    phone = models.IntegerField()
    contactMail = models.EmailField()

    def __str__(self):
        return "%s" % (self.name)

和产品型号

class Product (models.Model):
    name = models.CharField(max_length=40)
    description = models.CharField(max_length=150)
    price = models.CharField(max_length=7)
    store = models.ManyToManyField(Store)


def __str__(self):
    return "%s" % (self.name)

我试图通过推销员获得商店的名称,因为以后我需要在商店中获取关联的产品,并且我想使用相同的过程或类似的方法在该特定商店中用产品填充HTML表。

我已经在一家名为LeBlanc的商店里找到了一个叫JohnSmith的推销员。铅笔和书籍是LeBlanc中关联的产品

我认为:

def load_store(request):
    salesDude = Salesman.objects.filter(name='JohnSmith')
    print(salesDude)
    // <QuerySet [<Salesman: JohnSmith>]>     <- gotcha

然后,我尝试使用Salesman对象从商店中检索ID,但是我被困在这里。向前,我需要恢复商店的名称,并用作过滤器来检索商店中的产品。

我该如何实现?我只得到ID而不是名字。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

尝试:

def load_store(request):
    salesDude = Salesman.objects.filter(name='JohnSmith')
    print (salesDude)
    store = salesDude.store
    print (store)
    products = Product.objects.filter(store=store.name)
    print (products)

您是否需要商店的ID或名称,都应该能够使用salesDude.store.id或salesDude.store.name进行检索。