我想把一个ForeignKey连接到两个不同的型号.

例如:

我有两个型号,分别名为CastsArticles,第三个型号Faves,用于 Select 其他型号中的任何一个.我怎样才能使ForeignKey充满活力呢?

class Articles(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()

class Casts(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()

class Faves(models.Model):
    post = models.ForeignKey(**---CASTS-OR-ARTICLES---**)
    user = models.ForeignKey(User,unique=True)

这个是可能的吗?

推荐答案

我是这样做的:

from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import fields


class Photo(models.Model):
    picture = models.ImageField(null=True, upload_to='./images/')
    caption = models.CharField(_("Optional caption"),max_length=100,null=True, blank=True)

    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = fields.GenericForeignKey('content_type', 'object_id')

class Article(models.Model):
    ....
    images     = fields.GenericRelation(Photo)

您可以添加类似以下内容的内容

    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = fields.GenericForeignKey('content_type', 'object_id')

致最喜爱的人 和

    fields.GenericRelation(Faves)

投稿

contenttypes docs

Django相关问答推荐

RDBMS多对多关系Django

Django和静态文件

如何显示;Django认证系统;在模板中?

如何在 Django REST Framework API 响应中使用多标签过滤器?

获取 Django Rest API 的第一个和最后一个相关对象

Django:使用相同的外键在不同的应用程序中 Select 多个列

Django 模型 Select - 只允许管理界面上的特定转换

Django 如何知道我的数据库的路径?

Django中的 联合(Union) 和相交(Intersect)

Django过滤器查询外键

根据模型属性获取django对象id

在 Django 管理屏幕中删除添加另一个

Django admin:我可以定义字段顺序吗?

Django:使用render或render_to_response时添加响应头

django-object-permissions Vs django-guardian Vs django-authority

Django:如何过滤属于特定组的用户

Django - 一起为 2 个或更多字段创建唯一的数据库约束

获取 django 应用的绝对路径

如何在字段集中显示 Django 管理内联模型?

django-getlist()