我有这些型号:
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类用于将计划信息附加到任何对象,例如Meeting和Milestone。在
ObjectPerm类为任何需要保护的模型提供对象级权限。在
当我创建会议实例时,我为计划信息分配一个EventEntry实例。我还分配ObjectPerm实例来指定哪些用户可以访问会议对象。在
有更多的模型像会议和里程碑。在
现在,我要做的是检索EventEntry实例,但是根据ObjectPerm模型,只检索用户有权访问的相关对象的实例。例如public==True或用户在EventEntry字段“users”中的所有EventEntry实例。通过这种方式,我可以提取出所有要在日历中显示的事件,但是我不需要过滤会议、里程碑等,只是我无法使用Django的ORM在Python中编写这个过滤器。有什么建议,谢谢。谢谢
你看过文件了吗?这些信息对我似乎很有帮助。这可能很有用,因为根据我的经验来看,这可能需要打几次电话才能完成工作。希望有用
https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#reverse-generic-relations
相关问题 更多 >
编程相关推荐