Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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 你能帮我理解Django吗;。获取“u对象()”;下面代码段中的语句?_Python_Django - Fatal编程技术网

Python 你能帮我理解Django吗;。获取“u对象()”;下面代码段中的语句?

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

我不明白返回的是哪一个对象

从上面可以看出,“Category”模型对象似乎会被返回,但有趣的是,“Category”模型没有连接到“Product”模型(产品模型中没有明确的FK),该模型在对象定义后立即被obj.Product_set.all()代码引用

“产品”模型也存在,定义如下-

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)