Skip to main content
 首页 » 编程设计

python之Django之按用户过滤

2025年05月04日24java哥

我想在他们的“帐户”页面中呈现属于司机的 Route 模型中的数据 - 因此显示他们到目前为止保存在数据库中的 leave_from、目的地等数据。

模型.py:

class Driver(models.Model): 
    user = models.OneToOneField(User, default=1) 
    first_name = models.CharField(max_length=120, blank=True, null=True) 
    last_name = models.CharField(max_length=120, blank=True, null=True) 
    tel = models.CharField(max_length=120, blank=True, null=True) 
    slug = models.SlugField(max_length=120, unique=True) 
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False) 
    updated = models.DateTimeField(auto_now_add=False, auto_now=True) 
 
    def __str__(self): 
        return self.user.username 
 
    def get_absolute_url(self): 
        return reverse("account", kwargs={"slug": self.slug}) 
 
    def save(self, *args, **kwargs): 
        self.slug = slugify(self.first_name) 
        super(Driver, self).save(*args, **kwargs) 
 
class Route(models.Model): 
    leave_from = models.CharField(max_length=120, blank=True, null=True) 
    destination = models.CharField(max_length=120, blank=True, null=True) 
    date = models.DateField(auto_now_add=False, auto_now=False) 
    time = models.TimeField(auto_now_add=False, auto_now=False) 
    driver = models.ForeignKey(Driver, on_delete=models.CASCADE) 
 
    def __str__(self): 
        return self.leave_from 

我玩过各种查询集,下面是最接近的查询集(我想……我是编码和 Django 的新手)。

Views.py:

def route(request, slug): 
    routedetails = Driver.objects.filter(route=request.user.driver.route_set.all()) 
    context = { 
        "routedetails": routedetails, 
        } 
    return render(request, "route.html", context) 

有了它,我能够让用户在该驱动程序的 route 显示相同数量的数据实例。

模板:

    {% for route in routedetails %} 
        <p>{{ route.user }}</p> 
    {% endfor %} 

我已经尝试了所有不同的变体,但我觉得这让我最接近,因为它至少返回用户的次数与该用户的路由中有数据的次数相同。在这种情况下,Route 中保存了 2 条路由,因此用户名会返回两次。我已经对其他用户进行了测试,它始终匹配。

我到处都看了,这是我所能得到的任何帮助。

请您参考如下方法:

如果你想要Route的详细信息,最好直接查询Route模型:

routedetails = Route.objects.filter(driver__user=request.user) 

然后您可以遍历模板中的 Route 对象:

{% for route in routedetails %} 
    <p>{{ route.leave_from }}</p> 
    <p>{{ route.destination }}</p> 
    ... 
{% endfor %}