5

私は時々フィールドに何も持っていないモデルの人物を持っていbirth_dateます。次に例を示します。

(Pdb) dude = Person.objects.get(pk=20)
(Pdb) dude
<Person: Bob Mandene>
(Pdb) dude.birth_date
(Pdb) dude.birth_date == None
True

を持つこれらのレコードをフィルタリングするにはどうすればよいbirth_date == Noneですか?

私はすでに次のことを試しましたが、成功しませんでした:

1: 「birth_date__isnull」は機能しません。

 Person.objects.filter(birth_date__isnull = True) 
 # does not return the required 
 # object.    Returns a record that have birth_date set to 
 # NULL when the table was observed in MySQL.

以下は、ID 20 のレコードを返しません。

Person.objects.filter(birth_date = "")

None であるフィールドをフィルタリングするにはどうすればよいですか? NULL と None は違うようです。Sequel pro (mysql グラフィカル クライアント) を使用してデータを表示すると、「0000-00-00 00:00:00」と表示され、次のいずれかが機能しませんでした

(Pdb) ab=Patient.objects.filter(birth_date = "0000-00-00 00:00:00")
 ValidationError: [u"'0000-00-00 00:00:00' value has the correct format 
 (YYYY-MM-DD     HH:MM[:ss[.uuuuuu]][TZ]) but it is an invalid date/time."]

モデル

class Person(models.Model):
    person_no = models.IntegerField(primary_key=True)
    locationid = models.IntegerField(null=True, db_column='LocationID', blank=True) 
    address =  models.ForeignKey('Address', db_column = 'address_no')
    birth_date = models.DateTimeField(null=True, blank=True)
    class Meta:
       managed = False
       db_table = 'person'
4

3 に答える 3

0

mysql の NULL は python では None に変わるので、birth_date__isnull=True で持っていたものは、birth_date を持つものを None として返す必要があります。

于 2013-08-13T02:53:11.443 に答える
0

ここでは、リストの理解が少し役立つ場合があります。

persons = [person for person in Person.objects.all() if not person.birth_date]
于 2013-08-13T16:30:31.907 に答える