2013-08-28 70 views
0

有沒有一種方法可以模型化,定義一個等效字段並用它來過濾?Can Django模型是否具有快捷鍵屬性?

實例型號:

class Manufacturer(models.Model): 
    uuid = UUIDField(primary_key=True) 
    company = models.ForeignKey(Company, db_column='company_uuid') 
    account_number = models.CharField(max_length=255, verbose_name=_('Account No')) 
    reference = models.CharField(max_length=255) 
    notes = models.TextField() 

    class Meta: 
     db_table = 'manufacturer' 

難道我再繼續這樣的模型上添加了一句:

self.field(name, self.company.name) 

,然後能夠做到:

Manufacturer.objects.filter(name="Davies") 

回答

1

對於簡單的情況下,你只會這樣做:

Manufacturer.objects.filter(company__name='Davies') 

如果要定義自定義過濾器,它看起來像要做到這一點是要設置自定義管理您的手機型號爲這裏所描述的最佳方式:https://docs.djangoproject.com/en/dev/topics/db/managers/#custom-managers

我還沒有真正做到這一點,但如果你定義了一個經理,你的模型,你應該能夠做到下列之一:

  • 覆蓋的filter方法,那麼你就應該能夠根據需要修改kwargs與你長的醜來代替你的別名加入
  • 定義一個新的方法li柯my_filter適用過濾你想

一個相關的SO問題:Django Custom Queryset filters

+0

我想要的界面簡化到一個模型中,這個例子是人爲的。真正的模型涉及更長的連接鏈,並且我們幾乎不斷地使用它。這導致我們的大部分視圖都包含這個長字符串,而且它幾乎不可讀。我們的問題域的建模非常複雜。 – Jharwood

+0

編輯我的答案來反映這一點。 – jnylen

相關問題