我有一个用于用户(Django内置)、报表、报表组和报表组成员的模型。用户可以创建属于单个报表组的报表。用户只能为其所属的报告组(因此为ReportGroupMembers)编写报告
在我的观点(如下)中,我只想显示用户拥有的或是其成员的组,并有一个装饰器,或者以某种方式轻松防止人们向他们不属于的组写信。ReportGroups可以关联密码(用于加入组)。我不太确定设计/实现这一点并使其良好扩展的最佳方法。如果我不需要它来扩展,我只需要循环遍历它们所属的组
视图:
owned_group_list = ReportGroup.objects.filter(user=request.user.id)
member_group_list = ReportGroupMember.objects.filter(user=request.user.id)
group_list = owned_group_list | member_group_list
return render(request, 'dashboard/main.html', {'group_list': group_list})
这在上面不起作用,因为它抱怨“无法在两个不同的基础模型上组合查询”
型号:
class ReportGroup(models.Model):
group_name = models.CharField(max_length=64, blank=False, null=False)
description = models.TextField(blank=True, null=True)
avatar = models.ImageField(upload_to='profiles', null=True, blank=True)
user = models.ForeignKey(User)
class Meta:
managed = True
db_table = 'report_group'
def __str__(self):
return 'Group: %s - User: %s' % (self.group_name, self.user.username)
class Report(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=264, unique=False)
users = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
group = models.OneToOneField(ReportGroup, on_delete=models.CASCADE)
class Meta:
managed = True
db_table = 'intelligence_report'
def __str__(self):
return '%s (%s)' % (self.name, self.users.username)
class ReportGroupMembers(models.Model):
groups = models.ForeignKey(ReportGroup, on_delete=models.CASCADE)
users = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
class Meta:
managed = True
db_table = 'report_group_membership'
def __str__(self):
return 'Group: %s - User: %s' % (self.groups, self.users)
我想出来了:
相关问题 更多 >
编程相关推荐