Не могу заставить Django raw sql работать правильно - PullRequest
0 голосов
/ 13 апреля 2020

Мне нужно сделать запрос внутреннего соединения следующим образом:

SELECT * FROM accounting_supplier as s 
    LEFT JOIN  ( 
    SELECT position, supplier_id FROM accounting_supplierposition WHERE user_id = %s 
    ) as sp on sp.supplier_id = s.id 
    ORDER BY sp.position", [request.user]

Модели выглядят так:

class Supplier(models.Model):
    name = models.CharField(max_length=512)
    short_name = models.CharField(max_length=100, unique=True)

class SupplierPosition(models.Model):
    supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    position = models.PositiveIntegerField()

Я пробовал разные подходы, но никто не дает желаемого результата. Здесь описан способ: Django Left Outer Join , но отличный не работает с MySQL, поэтому я решил использовать RAW. Но похоже, что порядок не работает правильно. Если я скопирую / вставлю sql из моего кода в mysql командную строку, он будет работать нормально, но в Django он сделает выбор, но не упорядочит.

Есть предложения? Спасибо.

1 Ответ

0 голосов
/ 14 апреля 2020

Просто небольшая ошибка: не [request.user], а [request.user.id]. Я использовал представление пользователя, но не id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...