我使用的是Django 1.5。
我有一张MultiUser桌
class MultiUser(models.Model):
user = models.ForeignKey(User, related_name='owner_user')
shared_user = models.ForeignKey(User, related_name='shared_user')
access_level = models.CharField(
default='Viewer',
max_length='100',
blank=True
)此表映射具有所有者用户下的访问级别的用户。user字段定义所有者用户,shared_user是映射用户,可以是管理器或查看器。
我定义了一个模型管理器方法来获取包括所有者用户在内的所有用户的列表。
def getSharedUsers(self, user):
# Get owner
owner = None
if self.filter(user=user).exists():
owner = user
elif self.filter(shared_user=user).exists():
owner = self.filter(shared_user=user)[0]
# Get all users
shared_users = []
if owner:
shared_users = self.filter(user=owner)
shared_users.append({
'shared_user': owner,
'access_level': 'OWNER',
'created': owner.created
})
return shared_users因为所有者用户在MultiUser模型中没有定义任何MultiUser。我希望手动将所有者用户添加到queryset列表中,将shared_user字段设置为所有者用户,并将access_level设置为所有者。
但这会产生错误,因为
'QuerySet' object has no attribute 'append'可以将手动生成的对象附加到queryset对象中吗?如果是,怎么做?
发布于 2019-02-08 09:54:32
在这里,当您使用shared_users = self.filter(user=owner)时,shared_users变成了一个查询集。如果您想将所有者附加到查询集中,您可以这样做:
from itertools import chain
shared_users = list(chain(shared_users, [{
'shared_user': owner,
'access_level': 'OWNER',
'created': owner.created
}])但不利的一面是,您将失去对查询集的支持功能。所以你需要把它当作一个列表来使用。
发布于 2019-02-08 09:51:08
你知道这有什么意义。
# Get all users
shared_users = []
if owner:
shared_users1 = self.filter(user=owner)
shared_users.append({
'shared_user': owner,
'access_level': 'OWNER',
'created': owner.created
})
return shared_usershttps://stackoverflow.com/questions/54589523
复制相似问题