【发布时间】:2013-07-17 10:17:27
【问题描述】:
我有一个 Django 应用程序,其中包含三个模型,它们使用 ContentTypes 和 Generic 来尝试并允许 Task 模型使用 How to use dynamic foreignkey in Django? 作为指南来使用其他两个模型中的任何一个的 ForeignKey(尽管我承认我有不知道这种方法发生了什么)。
class Task(models.Model):
date = models.DateTimeField(null = True)
day = models.IntegerField(null = True)
task = models.CharField(max_length = 100, null = False)
owner = models.CharField(max_length = 25, null = True)
notes = models.CharField(max_length = 250, null = True)
isDone = models.BooleanField(default = False, null = False)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
maintenance = generic.GenericForeignKey('content_type', 'object_id')
class Maintenance(models.Model):
startMonth = models.CharField(max_length = 15, null = False)
startYear = models.IntegerField(null = False)
location = models.CharField(max_length = 20, null = False)
mode = models.CharField(max_length = 20, null = False)
taskRef = generic.GenericRelation(Task)
class Template(models.Model):
name = models.CharField(max_length = 25, null = False)
location = models.CharField(max_length = 20, null = False)
mode = models.CharField(max_length = 20, null = False)
taskRef = generic.GenericRelation(Task)
通常,如果任务只有一个正常的外键来维护,我可以使用 Maintenance.task_set.all() 将所有任务连接到任何给定的维护,但是使用这个动态外键系统,该功能不起作用。有谁知道实现这种效果的替代函数调用?
【问题讨论】:
-
Maintenance.taskRef.all() 工作?
-
哦,这行得通,就像我说的,我真的不明白这是怎么回事。
-
这是有效的,因为您为模型添加了“反向”通用关系
-
我不知道你为什么对它的工作感到惊讶
-
这并不是说我对它的工作感到惊讶,我只是不完全理解我放入的所有部分都在做什么,这使得我很难理解我想要做什么。
标签: python django model generic-foreign-key