Python 你能帮我理解Django吗;。获取“u对象()”;下面代码段中的语句?
我不明白返回的是哪一个对象 从上面可以看出,“Category”模型对象似乎会被返回,但有趣的是,“Category”模型没有连接到“Product”模型(产品模型中没有明确的FK),该模型在对象定义后立即被obj.Product_set.all()代码引用 “产品”模型也存在,定义如下-Python 你能帮我理解Django吗;。获取“u对象()”;下面代码段中的语句?,python,django,Python,Django,我不明白返回的是哪一个对象 从上面可以看出,“Category”模型对象似乎会被返回,但有趣的是,“Category”模型没有连接到“Product”模型(产品模型中没有明确的FK),该模型在对象定义后立即被obj.Product_set.all()代码引用 “产品”模型也存在,定义如下- class Category(models.Model): title = models.CharField() slug = models.SlugField() description
class Category(models.Model):
title = models.CharField()
slug = models.SlugField()
description = models.TextField()
active = model.BooleanField()
timestamp = models.DateTimeField()
def __unicode__(self):
return self.title
似乎这个ManyToManyField引用就是所谓的“product_set”,但我想绝对肯定,因为当类别模型中没有明确的产品引用时,这个代码范例似乎很难阅读 来自 唯一的区别在于属性命名:定义ManyToManyField的模型使用该字段本身的属性名称,而“reverse”模型使用原始模型的小写模型名称,加上“\u set”(就像反向一对多关系一样) (强调矿山)
是的,这是djangos的一个很酷的小功能,每当存在多个关系时,添加
\u set
将查询与调用者有“一对多”关系的对象。请阅读手册,了解和:“返回此视图将显示的单个对象。如果提供了queryset,则该queryset将用作对象的源;否则,将使用get_queryset()。“当您将其与关联的URL组合时,它会变得更清晰。感谢您的输入。我已扩展了原始问题。在提出上述问题之前,我确实阅读了文档,但不清楚的是我添加的内容。
class Category(models.Model):
title = models.CharField()
slug = models.SlugField()
description = models.TextField()
active = model.BooleanField()
timestamp = models.DateTimeField()
def __unicode__(self):
return self.title
class Product(models.Model):
title = models.CharField()
categories = models.ManyToManyField('Category', blank=True)