Как отсортировать QuerySet по полю ,,OneToOneField,,?
Требуется: отсортировать QuerySet по полю зависимой ,,OneToOneField,, записи.
,,родительская,, модель
class productModel(models.Model):
price = models.PositiveIntegerField('Цена', null = True)
зависимая модель
class characterist_pkModel(models.Model):
base_product = models.OneToOneField('productModel', on_delete= models.CASCADE)
category = models.CharField('Категория', max_length= 40, null= True)
И нужно QuerySet с записями модели characterist_pkModel отсортировать по полю price ,,родительской записи,, типа:
characterist_pkModel.objects.get(pk= 1).base_product.order_by('price')
но для целого QuerySet-а.
Ответы (1 шт):
Автор решения: Andrew Holovko
→ Ссылка
Обратите внимание, что все имена классов должны следовать соглашению CapWords почти без исключений.
Отвечая на ваш вопрос
Как отсортировать QuerySet по полю ,,OneToOneField,,?
Я немного изменил ваш код, суть вы должны понять.
class Price(models.Model):
price = models.PositiveIntegerField('Цена', null=True)
class Product(models.Model):
price = models.OneToOneField(Price, on_delete=models.CASCADE)
Сортировку можно сделать следующим образом:
a = Product.objects.all().order_by('-price__price')
.order_by('-price__price')
# - сортирока в обратном порядке
# price - связання модель
# __price - связанное поле модели
ссылка на оф. документацию: https://docs.djangoproject.com/en/3.1/topics/db/examples/one_to_one/