Django 通过图库模型将多个模型链接到图像模型

Django 通过图库模型将多个模型链接到图像模型,django,Django,我试图将本例中的多个模型CoolModel和OtherModel链接到一个图库模型…该图库模型将依次具有多个图像。所以一个CoolModel可以有多张图片,而另一个Model可以有多张图片…都存储在同一个图像表中 我认为这是应该如何安排的,但我不清楚如何操作CoolModel和OtherModel的创建/删除实例。有人能提供创建CoolModel的示例代码并为其分配几张图片吗 class Gallery(models.Model): # not sure how to link this to

我试图将本例中的多个模型CoolModel和OtherModel链接到一个图库模型…该图库模型将依次具有多个图像。所以一个CoolModel可以有多张图片,而另一个Model可以有多张图片…都存储在同一个图像表中

我认为这是应该如何安排的,但我不清楚如何操作CoolModel和OtherModel的创建/删除实例。有人能提供创建CoolModel的示例代码并为其分配几张图片吗

class Gallery(models.Model):
# not sure how to link this to Image...or if it even has to be?

class Image(models.Model):
    gallery = models.ForeignKey(Gallery)
    image = models.ImageField(upload_to='media')

class CoolModel(models.Model):
    name = models.CharField(max_length=128)
    images = models.ForeignKey(Gallery)

class OtherModel(models.Model):
    name = models.CharField(max_length=128)
    images = models.ForeignKey(Gallery)

在我看来,你需要审视一段多人的关系。你的一些照片最终被复制到我的画廊里。此时,如果您有foreignkey关系,则图像将只能属于一个特定的库。这可能是您想要的,但图像有时可以分为几个类别。我想你会想要一个MunyToMon到你的画廊,这样你就可以有画廊进入体育,明星都可以应用到勒布朗·詹姆斯酷图像等..

< P>我不完全明白你想要达到什么,但它听起来类似于播放列表,或者说,在一个非常多的关系通过中介。下面是一个基于黑暗中的全面猜测的例子,你在寻找什么样的关系,因为我真的不知道“CoolModel”应该做什么或是为了什么:

class CoolModel(models.Model):
    name = models.CharField(max_length=128)
    other attributes

class Gallery(models.Model):
    coolmodel = models.ManyToMany(CoolModel, through='Image')

class Image(models.Model):
    image = models.ImageField(upload_to='media')
    gallery = models.ForeignKey(Gallery)
    coolmodel = models.ForeignKey(CoolModel)
中间层的关键是利用through参数,文档中有一些关于如何使用从文档复制的这些关系插入对象的好例子:

>>> ringo = Person.objects.create(name="Ringo Starr")
>>> paul = Person.objects.create(name="Paul McCartney")
>>> beatles = Group.objects.create(name="The Beatles")
>>> m1 = Membership(person=ringo, group=beatles,
...     date_joined=date(1962, 8, 16),
...     invite_reason="Needed a new drummer.")
>>> m1.save()
>>> beatles.members.all()
[<Person: Ringo Starr>]
>>> ringo.group_set.all()
[<Group: The Beatles>]
>>> m2 = Membership.objects.create(person=paul, group=beatles,
...     date_joined=date(1960, 8, 1),
...     invite_reason="Wanted to form a band.")
>>> beatles.members.all()
[<Person: Ringo Starr>, <Person: Paul McCartney>]

图像将只属于单个库,而库将只属于模型CoolModel、OtherModel等的单个实例。我只需要库模型再次充当各种模型、OtherModel、CoolModel等之间的中间人,并最终指向图像模型中的一组记录。