Python DJANGO在类似sql的联接中获取对象

Python DJANGO在类似sql的联接中获取对象,python,python-3.x,django,django-models,Python,Python 3.x,Django,Django Models,Context:我正在强迫自己学习django,我已经写了一个基于php的小网站,所以我基本上是通过移植页面和函数来学习django的工作原理。 我有两种型号 from django.db import models class Site(models.Model): name = models.CharField(max_length=50, unique=True) def __str__(self): return self.name class Com

Context:我正在强迫自己学习django,我已经写了一个基于php的小网站,所以我基本上是通过移植页面和函数来学习django的工作原理。

我有两种型号

from django.db import models

class Site(models.Model):
    name = models.CharField(max_length=50, unique=True)
    def __str__(self):
        return self.name

class Combo(models.Model):
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
    dead = models.BooleanField(default=False)
    timestamp = models.DateTimeField(auto_now_add=True)
    siteID = models.ForeignKey(Site, on_delete=models.PROTECT)
    class Meta:
        unique_together = ('username','siteID')
    def __str__(self):
        return f"{self.username}:{self.password}@{self.siteID.name}"
在创建视图时,我想获得
组合对象
,但我想先按站点名称排序,然后按用户名排序

我试图创建视图,但在我可以排序的字段方面出现错误,无法将关键字“Site”解析为字段。选项包括:死亡、id、密码、站点id、站点id\u id、时间戳、用户名

def current(request):
    current = Combo.objects.filter(dead=False).order_by('Site__name','username')
    return render(request, 'passwords/current.html',{'current':current})

因为我不必按字母顺序将站点输入数据库,所以按siteID排序是没有用的。正在寻找一些帮助,以了解如何返回按站点名称对象然后按用户名排序的组合对象列表。

您可以按
siteID\uu name
排序:

def current(request):
    current = Combo.objects.filter(dead=False).order_by('siteID__name','username')
    return render(request, 'passwords/current.html',{'current':current})
如果要为数据库列指定其他名称,可以使用以下命令指定:

类组合(models.Model):
# …
site=models.ForeignKey(
地点,
在_delete=models.PROTECT上,
db_column='siteID'

)
我觉得我试过那样做,但我一定是打错了什么。我能让它工作,谢谢。
class Combo(models.Model):
    # …
    site = models.ForeignKey(Site, on_delete=models.PROTECT)
class Combo(models.Model):
    # …
    site = models.ForeignKey(
        Site,
        on_delete=models.PROTECT,
        db_column='siteID'
    )