将一个模型的ManyToManyField与另一个模型的ForeignKey连接起来

时间:2016-02-14 05:55:54

标签: python django django-models many-to-many

让我有一个带有ForeignKey的模型到另一个:

class Photo(models.Model):
    name = models.CharField(max_length=64)
    album = models.ForeignKey('Album')

并且'Album'模型必须自动将此照片的对象连接到ManyToManyField:

class Album(models.Model):
    name = models.CharField(max_length=64)
    photoItems = models.ManyToManyField(Photo)

问题是我该怎么做?

1 个答案:

答案 0 :(得分:1)

你可以通过以下方式完成,Django应该自动添加反向关系。因此,无需将相册作为外键添加到您的Photo模型中。这样做可以访问"专辑"来自你的照片模型。

class Photo(models.Model):
    name = models.CharField(max_length=64)

class Album(models.Model):
    name = models.CharField(max_length=64)
    photoItems = models.ManyToManyField(Photo, related_name='albums')

<强>贝壳:

>>> photo1=Photo(name="photo number 1")
>>> photo2=Photo(name="photo number 2")
>>> photo1.save()
>>> photo2.save()
>>> album=Album(name="album1")
>>> album.save()
>>> album.photoItems.add(photo1,photo2)
>>> photo1.albums.get().name
'album1'