簡體   English   中英

python-django-在每個模型字段上使用標志

[英]python - django - using a flag on each model field

我想為我的應用程序構建一個簡單的審核系統,我的應用程序模型中有一個這樣的類:

#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. 如何為使用該視圖方法的管理區域中的每個對象添加一個復選框?

非常感謝你。

您需要將is_qualified為實際字段-一個BooleanField將是適當的-並將其默認設置為False。

is_qualified = models.BooleanField(default=False)

您也可以在這里查看文檔

嗯,為每個字段添加is_qualified會有點太多。

如果您使用的是PostgreSQL,我會考慮使用django-hstore ,您可以在其中動態添加鍵值字段。

使用此程序包,您可以將字段名作為鍵,將True / False作為值。

然后,當嘗試驗證您的對象是否“合格”時,您只需執行以下操作:

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


編輯

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM