2011-08-09 30 views
5

Tôi có một charfield như sau:thử nghiệm cho các khóa trống/chuỗi null trong django

myString = models.CharField(max_length=50,null=True,blank=True) 

Trong nhiều của các đối tượng của tôi, chuỗi đặc biệt này thường được để trống, khi tạo ra thông qua giao diện django admin. Trong MySQL, cột là VARCHAR (50) với mặc định = NULL.

Dù thử nghiệm tôi cố gắng làm trong views.py tôi để phát hiện giá trị trống, luôn luôn dường như giá trị false cho dù mục là trống hay không:

myString is None 
myString=="" 
len(myString)==0 

Làm thế nào tôi có thể phân biệt giữa trống và phi giá trị trống cho trường này?

Cảm ơn

EDIT:

xem thực tế là những điều sau đây, tôi muốn thực hiện một khối chỉ khi lĩnh vực này không phải là trống.

if myObject.myString: 
    #do something 

khối luôn thực hiện và tôi đã thử tất cả các ví dụ trên về thử nghiệm cho trường trống.

CHỈNH SỬA 2:

Đầu đó, if myObject.myString: thực sự hoạt động.

+0

'myString' không phải là chuỗi - đó là' mô hình.CharField'. Hiển thị cho chúng tôi xem thực tế của bạn nơi bạn đang cố gắng thực hiện việc này. – agf

+0

được chỉnh sửa bằng mã xem – meepmeep

+1

vì vậy những gì hiện 'in myString' hoặc hiển thị tương đương ngay trước câu lệnh' if' đó? Bạn cần cung cấp thêm thông tin cho chúng tôi. – agf

Trả lời

6

nếu d của bạn là một trong hai None hoặc "" sau đó chỉ cần kiểm tra -

if d: 
    #do something 
else: 
    #do something else 
3

myString không phải là một chuỗi - đó là một models.CharField. Hiển thị cho chúng tôi xem thực tế của bạn nơi bạn đang cố gắng thực hiện việc này.

Nếu bạn đã có một thể hiện của mô hình của bạn, bạn chỉ cần có thể làm

if model_instance.myString: 

để kiểm tra nếu nó không trống.

8

Một số trường trống trả lại các chuỗi trống trong khi các trường khác trả lại None. Tuy nhiên, một trường boolean nullable sẽ trả lại False khi nó đã được thiết lập. Điều này sẽ không vượt qua bài kiểm tra trong câu trả lời của Srikar. Một giải pháp mạnh mẽ hơn là:

if d in [None, '']: 
    # This field is empty. 
Các vấn đề liên quan