2015-09-22 39 views
1

我使用的是django1.7,我有两个模型。django models.py使用外国字段排序

我的模型之一,我想指定ordering在外国模型的字段。这两个模型通过外键链接。

这里是我的两个例子型号:

class ObjectiveDetails(models.Model, FillableModelWithLanguageVersion): 
    user = models.ForeignKey(User) 
    language_version = models.ForeignKey('LanguageVersion') 
    field = models.TextField(null=False, blank=False, max_length=5000) 
    objective_timestamp_added = models.DateTimeField(auto_now_add=True, auto_now=False) 
    objective_timestamp_updated = models.DateTimeField(auto_now=True, auto_now_add=False) 

    class Meta: 
     ordering = ['language_version.language_code', 'id'] 

class LanguageVersion(models.Model): 
    """Language version selection for a user""" 
    user = models.ForeignKey(User) 
    language_code = models.CharField(max_length=32) 
    language_code_disabled = models.BooleanField(default=False) 
    language_version_timestamp_added = models.DateTimeField(auto_now_add=True, auto_now=False) 
    language_version_timestamp_updated = models.DateTimeField(auto_now=True, auto_now_add=False) # the date the language version is updated when the user changes their subscription type. 

我想通过在LanguageVersion模型作为language_code订购ObjectiveDetails。

我已经尝试了几次尝试,但我无法弄清楚。我已阅读文档和搜索SO &谷歌,但找不到正确的答案,由LANGUAGE_CODE

+1

你尝试'ORDER_BY( 'LANGUAGE_VERSION')'? –

回答

1

添加顺序来LanguageVersionObjectiveDetails

您添加的每个外键删除.language_code 也隐含地包含了它的所有默认排序。

https://docs.djangoproject.com/en/1.7/ref/models/options/#ordering

您的模型会是这样

class ObjectiveDetails(models.Model, FillableModelWithLanguageVersion): 
    user = models.ForeignKey(User) 
    language_version = models.ForeignKey('LanguageVersion') 
    field = models.TextField(null=False, blank=False, max_length=5000) 
    objective_timestamp_added = models.DateTimeField(auto_now_add=True, auto_now=False) 
    objective_timestamp_updated = models.DateTimeField(auto_now=True, auto_now_add=False) 

    class Meta: 
     ordering = ['language_version', 'id'] 

class LanguageVersion(models.Model): 
    """Language version selection for a user""" 
    user = models.ForeignKey(User) 
    language_code = models.CharField(max_length=32) 
    language_code_disabled = models.BooleanField(default=False) 
    language_version_timestamp_added = models.DateTimeField(auto_now_add=True, auto_now=False) 
    language_version_timestamp_updated = models.DateTimeField(auto_now=True, auto_now_add=False) # the date the language version is updated when the user changes their subscription type. 

    class Meta: 
     ordering = ['language_code'] 
+0

demonno,谢谢,这很好 - 我有点尴尬,我错过了。 – user1261774