gpt4 book ai didi

django - related_name的作用是什么?

转载 作者:行者123 更新时间:2023-12-03 12:07:56 24 4
gpt4 key购买 nike

在有关related_name的Django文档中,它表示以下内容:

The name to use for the relation from the related object back to this one. It’s also the default value for related_query_name (the name to use for the reverse filter name from the target model). See the related objects documentation for a full explanation and example. Note that you must set this value when defining relations on abstract models; and when you do so some special syntax is available.

If you’d prefer Django not to create a backwards relation, set related_name to '+' or end it with '+'.



我不太清楚。如果有人能再解释一下,那对我会有很大帮助。

最佳答案

创建外键时,将两个模型链接在一起。具有ForeignKey()字段的模型使用字段名称来查找其他模型。它还隐式地向链接模型添加一个成员,以回溯此成员。

class Post(models.Model):
# ... fields ...

class Comment(models.Model):
# ... fields ...
post = models.ForeignKey(Post, related_name=???)

这里有三种可能的情况:

1.不要指定 related_name
如果您未指定名称,则django将默认为您创建一个名称。
some_post = Post.objects.get(id=12345)
comments = some_post.comment_set.all()

默认名称是关系的名称+ _set

2.指定一个自定义值

通常,您想指定一些使其更自然的东西。例如, related_name="comments"
some_post = Post.objects.get(id=12345)
comments = some_post.comments.all()

3.防止创建反向引用

有时,您不想添加对外部模型的引用,因此请使用 related_name="+"不创建它。
some_post = Post.objects.get(id=12345)
comments = some_post.comment_set.all() # <-- error, no way to access directly
related_query_name基本上是相同的想法,但是在queryset上使用 filter()时:
posts_by_user = Post.objects.filter(comments__user__id=123)

但是老实说,我从未使用过它,因为默认情况下使用了 related_name值。

关于django - related_name的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44160983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com