2011-12-20 28 views
5

Tôi có một hàm chung lặp lại trên _meta.fields của một đối tượng nhất định. Tất cả các tên trường và giá trị được tìm nạp một cách chính xác ngoại trừ trường ManyToMany. Dường như hoàn toàn bỏ qua các trường ManyToMany. Làm thế nào để chúng ta lấy lại các fks từ các lĩnh vực m2m?nhiều trường không hiển thị trong _meta.fields

def myfunc(self) 
    for field in self._meta.fields: 
     type = field.get_internal_type() 
     name = field.name 
     val = getattr(self,field.name) 

Trả lời

15

Họ là trong self._meta.many_to_many

0

Nếu bạn muốn để có được tất cả các tên trường trong một mô hình. Bạn không cần sử dụng self._meta.many_to_many + self._meta.fields.

Bạn chỉ có thể sử dụng [field.name for field in model._meta.get_fields()].

Lưu ý rằng get_fields sẽ trả lại tất cả các lĩnh vực (trong đó có nhiều-nhiều và chính nước ngoài)

Django get_fields:

def get_fields(self, include_parents=True, include_hidden=False): 
    """ 
    Returns a list of fields associated to the model. By default, includes 
    forward and reverse fields, fields derived from inheritance, but not 
    hidden fields. The returned fields can be changed using the parameters: 

    - include_parents: include fields derived from inheritance 
    - include_hidden: include fields that have a related_name that 
         starts with a "+" 
    """ 
Các vấn đề liên quan