首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据列值消除元组

如何根据列值消除元组
EN

Stack Overflow用户
提问于 2018-12-06 15:57:26
回答 1查看 19关注 0票数 0

当用户注册法律时,用户id (user_id)和law id (law_id)保存在marked表中。

当用户在法律中插入描述时,使用相同的user_id和相同的law_id创建一个新的元组。

我试图只获取一次法律数据,但我的查询是为marked表中存在的每个元组返回一个规则。

我的模特:

代码语言:javascript
复制
class Law(models.Model):
    name  = models.CharField('Nome', max_length=100)    
    descriptionlaw = models.TextField('Descrição', blank = True, null=True)

class Marked(models.Model):
    law = models.ForeignKey(Law, on_delete=models.CASCADE, verbose_name='Lei', related_name='marcacaoArtigos')
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name='markedUser', related_name='markedUser')
    description = models.TextField('Descrição', blank = True, null=True)

我的问题是:

代码语言:javascript
复制
user1 = User.objects.get(id= request.user.id)    
marked = user1.markedUser.all()

那是我的桌子

代码语言:javascript
复制
"id"    "description"   "law_id"  "user_id"
"1"       "desc1"         "1"       "1"
"2"       "desc2"         "1"       "1"
"3"       "desc3"         "1"       "1" 
"4"       "desc4"         "2"       "1" 
"5"       "desc5"         "2"       "1" 

因此,在本例中,我希望只接收一次law_id=1和一次law_id=2。但是我收到了三次law_id=1和两次law_id=2

----------edit-----------

在我看来,我需要显示law 1law 2的值。

要在我的视图中显示的值的示例:

代码语言:javascript
复制
{{law.id}} = 1,
{{law.name}} = law1,
{{law.descriptionlaw}} -> 'law1 description'

{{law.id}} = 2,
{{law.name}} = law2,
{{law.descriptionlaw}} -> 'law2 description'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-06 17:38:45

在我看来,我需要展示法律1和法律2的价值。

您想要显示法律属性,那么应该选择law模型:

代码语言:javascript
复制
user1 = User.objects.get(id= request.user.id)    
laws = Law.objects.filter( marcacaoArtigos__user = user1 ).distinct()

因为您有一个related_name on Marked to Law,所以您应该在查询中使用它来组成filter表达式。

请记住将laws发送到模板。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53655192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档