2009-08-09 8 views
5

Trong Google App Engine, mô hình hóa dữ liệu, tôi muốn hỏi làm thế nào tôi có thể kiểm tra giá trị null của thuộc tính với lớp UserProperty? ví dụ: tôi có mã này:Cách kiểm tra giá trị null cho UserProperty trong Google App Engine

class Entry(db.Model): 
    title = db.StringProperty() 
    description = db.StringProperty() 
    author = db.UserProperty() 
    editor = db.UserProperty() 
    creationdate = db.DateTimeProperty() 

Khi tôi muốn kiểm tra những mục có biên tập viên không phải là null, tôi không thể sử dụng loại GqlQuery

query = db.GqlQuery("SELECT * FROM Entry " + 
        "WHERE editor IS NOT NULL" + 
            "ORDER BY creationdate DESC") 
    entries = query.fetch(5) 

tôi tự hỏi nếu có bất kỳ phương pháp nào để kiểm tra sự tồn tại của một biến với UserProperty? Cảm ơn bạn!

+0

Bạn có thể làm rõ mã của mình nhiều hơn một chút không? – Diones

Trả lời

13
query = db.GqlQuery("SELECT * FROM Entry WHERE editor > :1",None) 

Tuy nhiên, bạn không thể ORDER BY một cột có một tình trạng bất bình đẳng trên một cột khác: đó là một hạn chế GAE nổi tiếng và không có gì để làm với bất động sản là một UserProperty cũng không phải với việc kiểm tra sự bất bình đẳng bạn đang làm việc với Không.

Sửa: Tôi đã có một = trước đó, nhưng như @Nick chỉ ra, bất cứ điều gì đó là = None là> Không, và> là về nhanh gấp hai lần trên game (vì = được tổng hợp bởi công đoàn của <! và>), do đó, sử dụng> đây là một tối ưu hóa đáng giá.

+2

Trong trường hợp này, "WHERE editor>: 1" sẽ là lựa chọn tốt hơn - a! = Truy vấn được dịch thành hai truy vấn - một truy vấn nhỏ hơn và một cho lớn hơn. Vì không có gì nhỏ hơn Không, nên bạn bỏ qua nó. –

+0

Cảm ơn Alex và Nick !!! Câu trả lời của bạn đã giải quyết được vấn đề của tôi! –

+0

Mẹo tuyệt vời Nick, tx - chỉnh sửa để sửa. –