如何根据列值消除元组

时间:2018-12-06 15:57:26

标签: python django

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

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

我仅尝试获取定律数据一次,但是我的查询返回的是marked表中每个元组的定律。

我的模特:

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)

我的查询:

user1 = User.objects.get(id= request.user.id)    
marked = user1.markedUser.all()

那是我的桌子:

"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两次。

----------编辑-----------

我认为我需要显示law 1law 2的值。
在我的视图中显示的值的示例:

{{law.id}} = 1,
{{law.name}} = law1,
{{law.descriptionlaw}} -> 'law1 description'

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

1 个答案:

答案 0 :(得分:1)

  

我认为我需要证明法律1和法律2的价值

您要显示法律属性,则应选择law模型:

user1 = User.objects.get(id= request.user.id)    
laws = Law.objects.filter( marcacaoArtigos__user = user1 ).distinct()

由于在related_nameMarked上有一个Law,因此应该在查询时使用它来组成filter表达式。

请记住将laws发送到模板。