Django-将具有不同外键的Approval子类组合到一个类中

Django-将具有不同外键的Approval子类组合到一个类中,django,django-models,Django,Django Models,假设我的Django项目中有两个模型 class Project(models.Model): name = models.CharField(max_length=256) class Forecast(models.Model): name = models.CharField(max_length=256) project = models.ForeignKey(Project) 我想在一个独立的应用程序中构建一个批准模型,该模型允许我组合以下两个批准子类: c

假设我的Django项目中有两个模型

class Project(models.Model):
    name = models.CharField(max_length=256)

class Forecast(models.Model):
    name = models.CharField(max_length=256)
    project = models.ForeignKey(Project)
我想在一个独立的应用程序中构建一个批准模型,该模型允许我组合以下两个批准子类:

class ProjectApproval(models.Model):
    approver = models.ForeignKey(User)
    approved_object = models.ForeignKey(Project)

class ForecastApproval(models.Model):
    approver = models.ForeignKey(User)
    approved_object = models.ForeignKey(Forecast)
变成更一般的东西,比如:

class Approval(models.Model):
    user = models.ForeignKey(User)
    approved_object = [whatever I want ... a Project, a Forecast, a Checkbook, a Plan]
这可能吗

谢谢


Mike

当然可以,Django有一般关系:)

看看django文档

实施的一个例子如下:

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

class Approval(models.Model):
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

当然可以,Django有通用关系:)

看看django文档

实施的一个例子如下:

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

class Approval(models.Model):
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

哇,我看了一整本教程书,从来没有接触过。谢谢你指出这一点……哇,我看了整整一本教程,从来没有接触过。谢谢你指出这一点。。