我无法同时显示用户的个人和群组条目。
我的小组模型是这样写的:
class Group(models.Model):
name = models.CharField(max_length=100)
users = models.ManyToManyField(User, blank=True, null=True, related_name='entry_users')
我的参赛模特:
class Entry(models.Model):
###
authorized_groups = models.ManyToManyField('Group', null=True, blank=True, related_name='entry_groups')
objects = EntryManager()
在Entry
模型之前,我写了一个带有用户过滤器的条目管理器。
如果我想显示用户的个人条目,请使用以下内容:
class EntryManager(models.Manager):
def for_user(self, user):
return super(EntryManager, self).get_query_set().filter(creator=user)
如果我想显示用户的群组条目,请使用以下内容:
class EntryManager(models.Manager):
def for_user(self, user):
return super(EntryManager, self).get_query_set().filter(authorized_groups=user)
我想将EntryManager
模型的两个版本合二为一。现在,我可以使用或者两种,但不能两者都使用。有什么提示吗?
如果它有所不同,在views.py
中,我有一行代码可以抓取用户有权访问的所有对象:
entries = Entry.objects.for_user(request.user)
也许我应该保留两个Entry Manager并编写两个不同的视图 - 一个用于单个对象,另一个用于组对象。但这不会很干。
答案 0 :(得分:0)
我保留了第一个EntryManager
:
class EntryManager(models.Manager):
def for_user(self, user):
return super(EntryManager, self).get_query_set().filter(creator=user)
写了GroupManager
:
GroupManager(models.Manager):
def for_user(self, user):
return super(EntryManager, self).get_query_set().filter(authorized_groups=user)
然后我将两者放在我的Entry
模型下:
class Entry(models.Model):
###
objects = EntryManager()
grpobjects = GroupManager()
在views.py
我有这个:
entries = Entry.objects.for_user(request.user) | Entry.grpobjects.for_user(request.user)
似乎要做的伎俩。如果有更好的方法,请告诉我。