Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何筛选通用外键?_Python_Django_Django Models_Orm_Generic Relations - Fatal编程技术网

Python 如何筛选通用外键?

Python 如何筛选通用外键?,python,django,django-models,orm,generic-relations,Python,Django,Django Models,Orm,Generic Relations,我有这些模型: class EventEntry(models.Model): content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() content_object = generic.GenericForeignKey('content_type', 'object_id') start_date = models.DateTimeField

我有这些模型:

class EventEntry(models.Model):
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')
    start_date =  models.DateTimeField(...)
    end_date = models.DateTimeField(...)
    field = models.CharField(max_length=64)

class ObjectPerm(models.Model):
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')
    public = models.BooleanField(...)
    users = models.ManyToManyField(User...)
    groups = models.ManyToManyField(Group...)

class Meeting(models.Model):
    scheduled_time = generic.GenericRelation(EventEntry)
    room = models.CharField(max_length=8)
    permissions = GenericRelation(ObjectPerm)

class Milestone(models.Model):
    due_date = generic.GenericRelation(EventEntry)
    title = models.CharField(max_length=128)
    permissions = GenericRelation(ObjectPerm)
EventEntry类用于将计划信息附加到任何对象,例如会议和里程碑

ObjectPerm类为任何需要保护的模型提供对象级权限

创建会议实例时,我会为日程信息分配一个EventEntry实例。我还分配ObjectPerm实例来指定哪些用户可以访问会议对象

有更多的模式,如会议和里程碑

现在,我要做的是检索EventEntry实例,但基于ObjectPerm模型,仅检索用户有权访问的相关对象的实例


例如,public==True或用户位于EventEntry字段“users”中的所有EventEntry实例。通过这种方式,我可以提取所有事件以显示在日历中,但我不需要筛选会议、里程碑等。除非我无法解决如何使用Django的ORM在Python中编写此筛选器。

您看过文档了吗?这些信息似乎对我很有帮助。这可能是有用的,因为以我(很少)的经验来看,这可能需要打几个电话才能完成工作。希望它能起作用


谢谢。我已经阅读了文件。由于某些原因,我无法确定如何获取用户可以访问的会议和里程碑(以及其他模型)的EventEntry对象。是否已签出此帖子?