2016-09-13 2 views
0

私はapplication.Iのための単純なモデレーションシステムを構築したい、このように私のアプリケーションモデルでクラスを持っている:のpython - ジャンゴ - 各モデルフィールドにフラグを使用して

#models.py 
class TableName(models.Model): 
     is_qualified = False 
     title = models.CharField(max_length=300, blank=False) 
     description = models.TextField(max_length=500, default="DEFAULT VALUE") 
     video = models.FileField(upload_to='somepath') 
     picture_thumbnail = models.ImageField(upload_to='somepath') 

私は3つの質問を持っています

  1. 私のモデルの各フィールドにis_qualifiedを追加し、デフォルトでFalseに設定するにはどうすればよいですか?
  2. 管理者がオブジェクト(例:タイトルまたは説明)をチェックし、チェックボックスを使用してフィールドのis_qualifiedの値をTrueに変更するには、まずビューメソッドを記述できますか?
  3. このビューメソッドを使用するために管理領域に各オブジェクトのチェックボックスを追加するにはどうすればよいですか?

ありがとうございました。

答えて

1

ええと、フィールドごとにis_qualifiedを追加すると、ビットが多すぎます。

postgresqlを使用している場合は、django-hstoreを使用して、キー値フィールドを動的に追加することを検討します。

このパッケージを使用すると、フィールド名のようなものをキーとして、True/Falseを値として作成できます。次に、あなたのようないくつかのカスタム機能を持たせることができる

is_valid = all([value for key, value in your_hstore_field.items()])


EDIT

class TableName(models.Model): 
     is_qualified = models.BooleanField(default=False) 
     title = models.CharField(max_length=300, blank=False) 
     description = models.TextField(max_length=500, default="DEFAULT VALUE") 
     video = models.FileField(upload_to='somepath') 
     picture_thumbnail = models.ImageField(upload_to='somepath') 
     data = hstore.DictionaryField() 

:検証しようとすると、あなたのオブジェクトであるとき

は、それからちょうどこのような何かを "資格" を作りますこれは:

def update_qualified(obj_instance): 
    if all(value for key, value in obj_instance.data.items()): 
     obj_instance.is_qualified = True 
    else: 
     obj_instance.is_qualified = False 
    obj_instance.save() 
+0

私はsqlite3でローカル開発環境にいますが、私は展開のためにpostgresqlを使用します。だから私は私のビューメソッドでis_validを使用できますか?どこか他の場所? –

+0

はい、あなたのフィールドのすべてのフィールドを真偽値で検証したとします。 (常に多くのオブジェクトで時間がかかる可能性があります)、またはこの「メイン」検証インジケータである新しいフィールドを追加します。私は答えで自分のコードを更新しました。どうしたのか確認してください。 – sebb

+0

ありがとうございました!それは私の日を節約する。 –

1

is_qualifiedを実際のフィールドにする必要があります - ブール値フィールドが適切で、デフォルトはFalseにしてください。

is_qualified = model.BooleanField(default=False) 
+0

これは良いです。しかし、私はこのクラスのすべての分野でこれを欲しがっています。クラス全体(データベース全体のレコード)ではこれがありませんか?管理者は、自分が望む各オブジェクトを修飾することが許可されることを想像してください。例えば、彼はビデオと写真とタイトルを受け入れますが、彼は説明を受け入れません。 –

+0

Danielsの例に従って、各フィールドのタイトルフィールドに「title_is_qualified」、「description_is_qualified」を追加します。 –

+0

ありがとうございます。私はそれがうまくいくと思います。チェックボックスについても教えていただけますか? –

関連する問題