Django 模型根据与用户 FK 配置文件相关的布尔字段 True/False 对查询集进行排序
Django model order the queryset based on booleanfield True/False that related with User FK profile
我有两个django模型如下:
第一个是用户配置文件,它有一个 FK to User 模型:
class Profile(models.Model):
PRF_user = models.OneToOneField(User, related_name='related_PRF_user', on_delete=models.CASCADE)
PRF_Priority_Support = models.BooleanField(default=False)
第二个是票模型,它有一个 FK 到用户模型:
class ticket(models.Model):
ticket_status_options = [
('open', 'open'),
('wait_customer_reply', 'wait_customer_reply'),
('replied_by_staff', 'replied_by_staff'),
('replied_by_customer', 'replied_by_customer'),
('solved', 'solved'),
]
TKT_USER = models.ForeignKey(User, related_name='TKT_USER', on_delete=models.CASCADE)
TKT_DEB = models.ForeignKey('Site_departments', related_name='related_ticket_department', on_delete=models.CASCADE)
TKT_SUB = models.CharField(max_length=50, db_index=True, verbose_name="ticket subject")
TKT_BOD = models.TextField(verbose_name="ticket body")
TKT_image_attachment = models.ImageField(upload_to='TKT_img_attachment', blank=True, null=True , default=None)
TKT_CREATED_DATE = models.DateTimeField(auto_now_add=True)
TKT_UPDATED_DATE = models.DateTimeField(auto_now=True)
我想根据用户个人资料对工单进行排序Priority_Support
:
如果用户配置文件 PRF_Priority_Support
为 True,我想先在我的视图 QuerySet 中对其进行排序,否则(如果 PRF_Priority_Support
为 False)我想对其进行正常排序。
我该怎么做?
您好,您应该按以下方式过滤:
Model.objects.filter(field=True) 或 False 取决于您的需要
此致
您应该以大写字母开头命名您的模型。
对于订购门票,您可以使用如下方式:
' queryset_list = ticket.objects.order_by('-TKT_USER__related_PRF_user__PRF_Priority_Support')
在过滤中,当你想跨越关系时,你使用双下划线__。
这里有更多相关信息:
https://docs.djangoproject.com/en/3.1/topics/db/queries/#lookups-that-span-relationships
另一种方法是向模型的元数据添加排序 class。
例如:
MyModel(models.Model):
class Meta:
ordering = ('-my_boolean_field ',)
我有两个django模型如下:
第一个是用户配置文件,它有一个 FK to User 模型:
class Profile(models.Model):
PRF_user = models.OneToOneField(User, related_name='related_PRF_user', on_delete=models.CASCADE)
PRF_Priority_Support = models.BooleanField(default=False)
第二个是票模型,它有一个 FK 到用户模型:
class ticket(models.Model):
ticket_status_options = [
('open', 'open'),
('wait_customer_reply', 'wait_customer_reply'),
('replied_by_staff', 'replied_by_staff'),
('replied_by_customer', 'replied_by_customer'),
('solved', 'solved'),
]
TKT_USER = models.ForeignKey(User, related_name='TKT_USER', on_delete=models.CASCADE)
TKT_DEB = models.ForeignKey('Site_departments', related_name='related_ticket_department', on_delete=models.CASCADE)
TKT_SUB = models.CharField(max_length=50, db_index=True, verbose_name="ticket subject")
TKT_BOD = models.TextField(verbose_name="ticket body")
TKT_image_attachment = models.ImageField(upload_to='TKT_img_attachment', blank=True, null=True , default=None)
TKT_CREATED_DATE = models.DateTimeField(auto_now_add=True)
TKT_UPDATED_DATE = models.DateTimeField(auto_now=True)
我想根据用户个人资料对工单进行排序Priority_Support
:
如果用户配置文件 PRF_Priority_Support
为 True,我想先在我的视图 QuerySet 中对其进行排序,否则(如果 PRF_Priority_Support
为 False)我想对其进行正常排序。
我该怎么做?
您好,您应该按以下方式过滤:
Model.objects.filter(field=True) 或 False 取决于您的需要
此致
您应该以大写字母开头命名您的模型。
对于订购门票,您可以使用如下方式:
' queryset_list = ticket.objects.order_by('-TKT_USER__related_PRF_user__PRF_Priority_Support')
在过滤中,当你想跨越关系时,你使用双下划线__。
这里有更多相关信息: https://docs.djangoproject.com/en/3.1/topics/db/queries/#lookups-that-span-relationships
另一种方法是向模型的元数据添加排序 class。
例如:
MyModel(models.Model):
class Meta:
ordering = ('-my_boolean_field ',)