我只是在学习django并遵循教程。我有一个链接和一个书签。与我正在关注的教程不同,我希望链接只与一个书签相关联,但书签可以有多个链接。这是设置模型的方法吗?
class Link(models.Model):
url = models.URLField(unique=True)
bookmark = models.ForeignKey(Bookmark)
class Bookmark(models.Model):
title = models.CharField(maxlength=200)
user = models.ForeignKey(User)
links = models.ManyToManyField(Link)
答案 0 :(得分:6)
没有。从书签模型中删除links
,并访问特定书签的链接对象,您将使用bookmark.link_set.all()
(其中书签是特定的书签对象)。 Django为你填充反向关系。
或者,如果您这样选择,请在bookmark
ForeignKey中提供您自己的related name,如果您不喜欢“link_set”,请提供“链接”。
答案 1 :(得分:4)
足以在其中一个模型中定义关系。 Django会自动在另一个模型中创建一个属性。
如果您希望链接仅与一个书签相关联,请在Link
中定义一个引用Bookmark
对象的外键:
class Bookmark(models.Model):
title = models.CharField(max_length=200)
user = models.ForeignKey(User)
class Link(models.Model):
url = models.URLField(unique=True)
bookmark = models.ForeignKey(Bookmark)
要访问书签的链接,请使用bookmark.link_set
。该属性由Django自动创建。
答案 2 :(得分:1)
不,从links =
中删除Bookmark
语句 - 在书签中为您预定义的内容是属性link_set
,它是对其书签为此链接的查询(您可以重命名)那个属性,但实际上没有必要)。
答案 3 :(得分:1)
如果我更改代码 例如: class Bookmark(models.Model): title = models.CharField(max_length = 200)
class Link(models.Model):
url = models.URLField(unique=True)
bookmark = models.ForeignKey(Bookmark)
对他们来说是正确的关系,