我需要这样的东西:
class Group(models.Model):
id = models.IntegerField(primary_key=True)
name = models.TextField()
torrents = # Link to torrents in group
class Torrent(models.Model):
id = models.IntegerField(primary_key=True)
group = # Link to group
name = models.TextField()
hash = models.TextField(max_length=32)
file = models.FileField(blank=True, null=True)
然后是代码的下一个:
group = Group.objects.create(id=123, name="Test group")
# some code...
Torrent.objects.create(id=321, group=group, name="Test torrent", hash="hash")
然后:
Torrent.objects.get(id=321).group.torrents.all()
我需要使用什么?将Torrent
中的ForeginKey分组,将Groups
中的ManyToMany种子洪流?
答案 0 :(得分:0)
我认为您正在寻找related_name
。 related_name
允许您从Group
到Torrent
的反向查询。
所以,我认为您的关系应该是这样的:
class Group(models.Model):
id = models.IntegerField(primary_key=True)
name = models.TextField()
class Torrent(models.Model):
id = models.IntegerField(primary_key=True)
group = models.ForeignKey(Group, related_name='torrents', on_delete=models.CASCADE)
name = models.TextField()
hash = models.TextField(max_length=32)
file = models.FileField(blank=True, null=True)
答案 1 :(得分:0)
似乎您想要从ForeignKey
到Torrent
的{{1}}关系,这意味着:
Group
有一个小组,因此一个Torrent
可能有多个相关的种子。
Group
在这里关注class Group(models.Model):
id = models.IntegerField(primary_key=True)
name = models.TextField()
class Torrent(models.Model):
id = models.IntegerField(primary_key=True)
group = models.ForeignKey(Group, on_delete=models.CASCADE, related_name='torrents')
# _________________________________________________________^^^^^^^^^^^^^^^^^^^^^^
name = models.TextField()
hash = models.TextField(max_length=32)
file = models.FileField(blank=True, null=True)
属性。这就是您获取反向关系(related_name
)的方式。