2011-09-17 29 views
9

Trong Django, bạn có thể thực hiện các truy vấn cơ sở dữ liệu như sau:của Django đúp gạch

Model.objects.filter(name__icontains = 'bob') 

Câu hỏi đặt ra là: làm thế nào là làm việc này 'dưới vỏ bọc'? Là đôi gạch dưới một điều Django hoặc một điều Python? Đây có phải chỉ là một biến duy nhất có tên là name__icontains hay là một số loại cú pháp truy cập thuộc tính? Trong trường hợp trước, cách thức filter phân tích cú pháp tên biến để xác định rằng bạn đang tìm kiếm bảng Model cho tên chứa ở đâu đó chuỗi bob?

Trả lời

12

Đó là một điều Django, được triển khai với một số thứ về Python.

Trong Python, bạn có thể nhận được một cuốn từ điển của các đối số từ khóa thông qua với một hàm hoặc phương pháp:

>>> def func(*args, **kwargs): 
...  print(kwargs) 
>>> func(a=1, b=2) 
{'a': 1, 'b': 2} 

Từ đó, nó chỉ đơn giản có thể duyệt qua các phím từ điển và chia chúng trên __, và sau đó giải thích tuy nhiên nó muốn. Trong trường hợp này, phải mất phần cuối cùng và giải thích icontains là không chứa phân biệt chữ hoa chữ thường.

Các vấn đề liên quan