当前位置 : 主页 > 编程语言 > python >

django的model中related_name和related_query_name的区别

来源:互联网 收集:自由互联 发布时间:2022-06-15
# ForeignKey的字段: related_name 反向操作时,使用的字段名,用于代替原反向查询时的'表名小写_set'。 related_query_name :反向查询操作时,使用的连接前缀,用于替换'表名小写'。 作用于反

#  ForeignKey的字段:

related_name 反向操作时,使用的字段名,用于代替原反向查询时的'表名小写_set'。

related_query_name :反向查询操作时,使用的连接前缀,用于替换'表名小写'。

作用于反向查询的时候

示例:


class Book(models.Model):
title = models.CharField(max_length=32,verbose_name='书名')
pulish = models.ForeignKey(to='Publish')

class Publish(models.Model):
name = models.CharField(max_length=32,verbose_name='出版社名称')



publish_obj = models.Publish.objects.filter(name='东方出版社').first()
publish_obj.book_set.all()

# related_name

class Book(models.Model):
title = models.CharField(max_length=32,verbose_name='书名')
pulish = models.ForeignKey(to='Publish', related_name= 'b')

class Publish(models.Model):
name = models.CharField(max_length=32,verbose_name='出版社名称')

publish_obj = models.Publish.objects.filter(name='东方出版社').first()
publish_obj.b.all()

  # related_query_name

class Book(models.Model):
title = models.CharField(max_length=32,verbose_name='书名')
pulish = models.ForeignKey(to='Publish', related_query_name= 'b')

class Publish(models.Model):
name = models.CharField(max_length=32,verbose_name='出版社名称')

publish_obj = models.Publish.objects.filter(name='东方出版社').first()
publish_obj.b_set.all()


网友评论