class Brand(models.Model):
brand_name = models.CharField(max_length=200)
def __unicode__(self):
return self.brand_name
class Product(models.Model):
product = models.ForeignKey(Brand)
product_name = models.CharField(max_length=300)
class Meta:
ordering = ['product_name']
def __unicode__(self):
return self.product_name
Скажем, у меня есть 2 брендов, каждый из которых 2 продуктов: Canon (камера, принтер) и Samsung (ноутбук, планшет). Когда я создаю экземпляры Продукта, я смогу сортировать их по их имени на странице администратора: камера, ноутбук, принтер, планшет. Все идет нормально. Но то, что я действительно хотел бы сделать, это отсортировать их по [Brand + Product], поэтому отсортированный список должен выглядеть следующим образом: «Canon - камера», «Canon - принтер», «Samsung - ноутбук», «Samsung - таблетки.
Для этого мне нужно каким-то образом получить доступ к значению поля brand_name из класса Product. Это возможно, и если да, то как? Или есть другой/лучший способ добиться такого рода сортировки?
Это то, что я попытался первым, но это не сработало. Насколько я понимаю (и, возможно, я ошибаюсь, потому что я новичок в Django), _ordering_ ожидает, что поле может сортироваться, например CharField, тогда как «продукт» - это просто класс ForeignKey для бренда, и это не собираемся вернуть имя_маркета. Проблема в том, что Продукт не является подклассом Brand; единственная связь между двумя классами - ForeignKey, и я не знаю, может ли/как это можно использовать для извлечения значений полей из класса Brand. –