绑定两个模型

时间:2019-06-27 05:55:40

标签: django django-models

我需要这样的东西:

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种子洪流?

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找related_namerelated_name允许您从GroupTorrent的反向查询。

所以,我认为您的关系应该是这样的:

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)

似乎您想要从ForeignKeyTorrent的{​​{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)的方式。

相关问题