我想在这里做的是显示当前用户“Signels”从所有用户,他是跟踪。但无法获取多个用户的数据
型号.py
class Signels(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
coin_name = models.CharField(max_length=300 , null=True, blank=True)
symbol = models.CharField(max_length=10 , null=True, blank=True)
title = models.CharField(max_length = 100, null=True, blank=True)
buy = models.CharField(max_length=200 , null=True, blank=True)
sell = models.CharField(max_length=200 , null=True, blank=True)
class Follow(models.Model):
user = models.ForeignKey(User, related_name='current_user', null=True)
Following = models.ManyToManyField(User)
视图.py
def post(request):
user1 = request.user
user_now = Follow.objects.get(user=user1)
for followed in user_now.Following.all():
signel = Signels.objects.filter(author=followed)
return render(request, 'posts/all.html', { "signels" : signel } )
全部.html
{% for i in signels %}
<div class="card post_card ">
<a type="button" href="/profile/{{i.author.username}}"
class="username"><b>{{i.author.username}}</b></a>
<p class="category">{{i.title}} </p>
<p class="category"><b>{{i.coin_name}}({{i.symbol}})</b></p>
<b class="buy">buy</b>:{{ i.buy }} ,
<b class="sell">sell</b>: {{i.sell}},
{% endfor %}
我在“all.html”中得到的结果是,它显示了第一个用户在多对多字段中跟踪的所有信号。但他跟踪的其他用户却一无所获。我想让当前用户看到他跟踪的所有用户的所有标志
您可以获得给定用户后跟的
Signels
个author
的所有Signels
:所以在视图中,我们可以这样写:
但我不确定你现在的造型是否合适。最好将两个用户链接到
Follow
模型,从而让Follow
充当两个用户之间的“直通”模型。现在Follow
对象基本上是User
模型上的一个额外的“代理”,从而创建一个额外的表。在建模过程中,一个User
可能有两个(或更多)Follow
对象,每个对象都包含一组following
。这还将导致额外的JOIN
,从而使查询更难计算更有效的“跟随”系统可能是:
在这种情况下,查询是:
在这里,一个用户不能跟随同一个用户两次,我们防止通过多对多关系创建一个额外的“隐藏”表
或者您可以create a custom user model [Django-doc]在这里添加一个多对多关系,以便进行后续操作
相关问题 更多 >
编程相关推荐