2017-05-11 2 views
0

これは非常にシンプルですが、驚くべきことにSOやDjangoのドキュメントにはまだ何の手がかりも見つけられませんでした。Django:ManyToManyFieldがFieldオブジェクトから空になっていないか確認してください

特定のManyToManyFieldが空であるかどうかを確認したいが、まだそれをやり遂げる方法を見つけることはできない。それは場合に役立ちます。ここに私の正確なユースケースは、です:

for field in school._meta.get_fields(): # school is the Model object 
    if (field.get_internal_type() == 'ManyToManyField'): 
     #if (find somehow if this m2m field is empty) 
      #do something if empty 
    else: 
     if (field.value_to_string(self) and field.value_to_string(self)!='None'): 
      #do something when other fields are blank or null 

は似ていますが、モデルオブジェクトで空になっているすべてのManyToManyFieldsをフィルタリングについてですthisポストを見つけ、そのような場合には役立ちません。

all()またはcount()またはempty()またはexists()はManyToManyFieldsでは機能しないようです。 (そのマネージャを参照するため)

if (field):戻りTrue

Field referenceまたはManyToManyField reference

答えて

0

getattr(school,field.name).exists()で関連するオプションを見つけることができませんでしたが私のために働きました。しかし、より良いアプローチがあるかどうかを知るすべての耳

(つまり、フィールドオブジェクトの代わりにmodel_object.fieldでクエリする)

関連する問題