将一个模型的 ManyToManyField 与另一个模型的 ForeignKey 连接起来
Connect one model's ManyToManyField with another model's 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)
问题是我该怎么做?
您可以按照以下方式进行,Django 应该会自动添加反向关系。因此,无需将相册作为外键添加到您的照片模型中。这样做你就可以从你的照片模型中访问 "albums"。
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')
Shell:
>>> 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'
让我有一个带有外键的模型:
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)
问题是我该怎么做?
您可以按照以下方式进行,Django 应该会自动添加反向关系。因此,无需将相册作为外键添加到您的照片模型中。这样做你就可以从你的照片模型中访问 "albums"。
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')
Shell:
>>> 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'