首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多模型ForeignKey

多模型ForeignKey
EN

Stack Overflow用户
提问于 2016-05-11 02:40:14
回答 2查看 3.1K关注 0票数 9

如果我有两个模特

代码语言:javascript
复制
class modelA(models.Model):
    # properties...

class modelB(models.Model):
    # properties

我想把这两个模型都放到一个images字段中,然后如何编写图像模型呢?如果只是一个,我想就像:

代码语言:javascript
复制
class Image(models.Model):
   image = models.ForeignKey(modelA)

所以,如果我也希望modelB有图像,那该怎么做呢?我要写ImageAImageB吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-11 02:52:29

看起来你想要使用通用外键

代码语言:javascript
复制
from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType

class Image(models.Model):
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

现在,您的Image模型可以具有其他任何一个模型的外键,并且可以有与每个对象相关联的多个图像。我所链接到的文档说明了如何使用此设置和查询对象等。

有关如何限制这一点,请参见这个答案,以便您可以将外键仅限于特定的模型。

票数 9
EN

Stack Overflow用户

发布于 2016-05-11 02:44:41

用另一种方式处理这段关系。

代码语言:javascript
复制
class Image(models.Model):
    # properties

class modelA(models.Model):
    image = models.ForeignKey(Image, vars=vals)

class modelB(models.Model):
    image = models.ForeignKey(Image, vars=vals)

然后,您可以查询为

代码语言:javascript
复制
modelB.image
modelA.image

image.modelA_set.all()
image.modelB_set.all()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37152200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档