2015-02-07 78 views
0

我想通過我的模型中的一個表的所有fielsd進行搜索。我嘗試使用「._meta.fields」django技巧,但它將所有字段都返回給我,包括Foregn Key字段。 我該如何排除這些?從表中只獲取「本地」字段?Django get_fields但不包括外鍵字段

,比如我有:

class Info(models.Model): 
    concerning  = models.ForeignKey(User) 
    name   = models.CharField(max_length=100 , blank=True) 
    value   = models.CharField(max_length=1000, blank=True) 
    creation_date = models.DateTimeField(auto_now_add=True) 

而且我想:(名稱,價值,CREATION_DATE)

我當時一看這些網頁,但無法找到一個辦法:

https://code.djangoproject.com/wiki/new_meta_api

Search multiple fields of django model without 3rd party app

Get model's fields in Django

回答

0

使用isinstance()只需檢查類的字段:

simple_field_names = [field.name for field in Info._meta.fields 
          if field.name != 'id' and 
           not isinstance(field, models.ForeignKey)] 

如果你想要得到的文本字段列表只有這樣,你可以通過所需的類的列表isinstance()功能:

text_field_names = [field.name for field in Info._meta.fields 
        if isinstance(field, (models.CharField, models.TextField))] 
+0

不錯!我們是否也可以用這種方法摳圖(charField)? – 2015-02-07 11:32:21

+0

我想我們可以(我只是累了:-s) – 2015-02-07 11:32:44

+0

當然可以。我懷疑你想檢查TextFields嗎?然後看到更新的答案。 – catavaran 2015-02-07 11:39:21