python-django-在每个模型字段上使用标志
我想为我的应用程序构建一个简单的调节系统。我的应用程序模型中有这样一个类:python-django-在每个模型字段上使用标志,python,django,Python,Django,我想为我的应用程序构建一个简单的调节系统。我的应用程序模型中有这样一个类: #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")
#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')
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()
我有3个问题:
is_qualified
添加到模型中的每个字段,并将其默认设置为False
是否符合条件
值更改为True
非常感谢。您需要将
设置为合格的
实际字段-布尔字段是合适的-并将其默认为False
is_qualified = models.BooleanField(default=False)
您还可以查看文档您需要将
设置为合格的
实际字段-布尔字段是合适的-并将其默认为False
is_qualified = models.BooleanField(default=False)
您还可以查看文档Hmm,为每个字段添加is\u将有点太多
如果您使用PostgreSQL,我会考虑使用,您可以动态地添加键值字段。 使用这个包,您可以将字段名作为键,将True/False作为值
然后,当尝试验证对象是否“合格”时,您只需做出如下操作:#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')
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()
is\u valid=all([value for key,value in your\hstore\u field.items()])
编辑 然后,您可以使用如下自定义函数:
#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')
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()
嗯,为每个字段添加is_将有点太多
如果您使用PostgreSQL,我会考虑使用,您可以动态地添加键值字段。 使用这个包,您可以将字段名作为键,将True/False作为值
然后,当尝试验证对象是否“合格”时,您只需做出如下操作:#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')
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()
is\u valid=all([value for key,value in your\hstore\u field.items()])
编辑 然后,您可以使用如下自定义函数:
#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')
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()
这很好。但我想在这门课的每一个领域都这样。这不是针对整个班级(整个数据库记录)的吗?请设想管理员将被允许限定他想要的每个对象。例如,他将接受视频、图片和标题,但他不接受描述。添加单个字段
title\u符合条件
,description\u符合条件
,为您的班级中的每个字段添加Daniels示例非常感谢。我想它会起作用的。你能帮我检查一下复选框吗?这很好。但我想在这门课的每一个领域都这样。这不是针对整个班级(整个数据库记录)的吗?请设想管理员将被允许限定他想要的每个对象。例如,他将接受视频、图片和标题,但他不接受描述。添加单个字段title\u符合条件
,description\u符合条件
,为您的班级中的每个字段添加Daniels示例非常感谢。我想它会起作用的。你能帮我检查一下复选框吗?我在本地使用sqlite3开发环境,但我将使用postgresql进行部署。那么我可以使用在我的视图方法中有效吗?或者在其他地方?是的,比方说,您已经在hstore字段中用真/假值验证了所有字段。您可以始终检查它(这可能会耗费大量对象的时间),或者添加新字段,这是“主要”验证指示器。我已经在回答中更新了我的代码,请检查我是如何完成的。我正在使用sqlite3进行本地开发环境,但我将使用postgresql进行部署。那么我可以使用在我的视图方法中有效吗?或者在其他地方?是的,比方说,您已经在hstore字段中用真/假值验证了所有字段。您可以始终检查它(这可能会耗费大量对象的时间),或者添加新字段,这是“主要”验证指示器。我已经在回答中更新了我的代码,请检查我是如何完成的。