订购数据,django 上的分页器
Ordering data, Paginator on django
我正在制作的程序是显示有关数据库中产品的信息。
该程序运行良好,问题是我想按姓氏而不是“所有者”订购。例如。如果客户用户名是 ewOI,这是“所有者”,他的名字是 Robert,姓氏是 Bosh,我想按姓氏而不是所有者来排序查询集。
查看代码如下:
class ExpView(ListView):
context_object_name = 'product'
queryset = Product.objects.filter(prod__isnull=True).order_by('owner')
template_name = 'productrecords.html'
paginate_by = 10
有两种模型,一种是产品中的,一种是用户中的
产品型号:
class Product(models.Model):
owner = models.ForeignKey(
User, on_delete=models.PROTECT, related_name='products'
)
id_subscription = models.CharField(max_length=30, unique=True)
amount = models.DecimalField(max_digits=11, decimal_places=2, null=True)
interest_rate = models.DecimalField(max_digits=4, decimal_places=2)
start_date = models.DateField(null=True)
用户模型:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.PROTECT, primary_key=True)
second_name = models.CharField(max_length=32, blank=True)
last_name2 = models.CharField(max_length=32, blank=True)
recovery_email = models.EmailField(unique=True, null=True)
phone_number = models.CharField(max_length=16, unique=True, null=True)
例如,如果我去终端并尝试从数据库中获取查询:
但我想 order_by('last_name') 但那行不通。如何订购?
非常感谢
您也可以在指定order_by参数时参考相关模型。像这样:
queryset = Product.objects.filter(prod__isnull=True).order_by('owner__profile__last_name2')
应该可以。
(虽然,我想知道如果用户模型有 last_name 字段,在配置文件中使用 last_name2 的原因是什么。)
你试过了吗?
queryset = Product.objects.filter(prod__isnull=True).order_by('owner__last_name2')
您可以通过键入 __ 从外键调用字段。
我正在制作的程序是显示有关数据库中产品的信息。 该程序运行良好,问题是我想按姓氏而不是“所有者”订购。例如。如果客户用户名是 ewOI,这是“所有者”,他的名字是 Robert,姓氏是 Bosh,我想按姓氏而不是所有者来排序查询集。
查看代码如下:
class ExpView(ListView):
context_object_name = 'product'
queryset = Product.objects.filter(prod__isnull=True).order_by('owner')
template_name = 'productrecords.html'
paginate_by = 10
有两种模型,一种是产品中的,一种是用户中的 产品型号:
class Product(models.Model):
owner = models.ForeignKey(
User, on_delete=models.PROTECT, related_name='products'
)
id_subscription = models.CharField(max_length=30, unique=True)
amount = models.DecimalField(max_digits=11, decimal_places=2, null=True)
interest_rate = models.DecimalField(max_digits=4, decimal_places=2)
start_date = models.DateField(null=True)
用户模型:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.PROTECT, primary_key=True)
second_name = models.CharField(max_length=32, blank=True)
last_name2 = models.CharField(max_length=32, blank=True)
recovery_email = models.EmailField(unique=True, null=True)
phone_number = models.CharField(max_length=16, unique=True, null=True)
例如,如果我去终端并尝试从数据库中获取查询:
但我想 order_by('last_name') 但那行不通。如何订购?
非常感谢
您也可以在指定order_by参数时参考相关模型。像这样:
queryset = Product.objects.filter(prod__isnull=True).order_by('owner__profile__last_name2')
应该可以。 (虽然,我想知道如果用户模型有 last_name 字段,在配置文件中使用 last_name2 的原因是什么。)
你试过了吗?
queryset = Product.objects.filter(prod__isnull=True).order_by('owner__last_name2')
您可以通过键入 __ 从外键调用字段。