出於某種原因ORDER_BY()是不是爲我工作在一個查詢集。我嘗試了所有我能想到的,但是我的Django/MySQL安裝似乎沒有對order_by()方法做任何事情。該列表似乎只是保持在一個相當無序的狀態,或者是以某種我無法看到的方式訂購的。Django的ORDER_BY()是不是爲我工作在PythonAnywhere
我的Django的安裝1.8。
我的車型之一的例子如下:
class PositiveTinyIntegerField(models.PositiveSmallIntegerField):
def db_type(self, connection):
if connection.settings_dict['ENGINE'] == 'django.db.backends.mysql':
return "tinyint unsigned"
else:
return super(PositiveTinyIntegerField, self).db_type(connection)
class School(models.Model):
school_type = models.CharField(max_length=40)
order = PositiveTinyIntegerField(default=1)
# Make the identity of db rows clear in admin
def __str__(self):
return self.school_type
這裏是從我的觀點相關線路:
schools = School.objects.order_by('order')
起初我還以爲這個問題是涉及一種具有使用了我在某個網站上找到的類所定義的非標準PositiveTinyIntegerField(),它允許我使用MySQL Tiny Integer字段。然而,當我按'id'或'school_type'命令排列時,這個列表仍然保持一個相當隨機的順序。
我可以把我自己的循環哪些訂單已檢索後查詢集,但我真的寧願解決這個問題,所以我可以用做它的標準Django的方式。
我希望有人能看到的問題可能來自何處。
如果'DEBUG = True',則應該記錄您的查詢。你可以顯示來自'django.db.connection.queries'的記錄查詢嗎? – knbk
這似乎不太可能,order_by不起作用。數據庫中的字段更有可能具有與您預期不同的值,或者您沒有運行您認爲正在運行的代碼。 – Glenn
我在管理員中更改訂單欄中的值。剛剛重新檢查他們,我可以向你保證他們是正確的。另外,如果我將視圖更改爲.filter(id = 1),則只有一個項目出現在列表中,所以它絕對是我正在處理的正確代碼。 至於伐木。 Debug = True在設置文件中設置,但我沒有收到任何SQL發送到任何日誌。這個StackOverflow帖子的底部響應似乎有一個方法,但是當我將這些行添加到settings.py並重新啓動應用程序時,我的SQL查詢仍未記錄。 –