Django-在视图中使用unique_togueter与使用queryset相比有哪些优点和缺点?
假设我们有下一个模型:Django-在视图中使用unique_togueter与使用queryset相比有哪些优点和缺点?,django,django-models,django-views,Django,Django Models,Django Views,假设我们有下一个模型: class Publications(models.Model): author = .......... post = .......... 我们不希望重复记录存储在数据库中 这可以通过模型上的unique Toghter完成: Meta: unique_together = (author, post) 或者,也可以在视图中通过以下方式完成: register_exist = Publications.objects.filter(.
class Publications(models.Model):
author = ..........
post = ..........
我们不希望重复记录存储在数据库中
这可以通过模型上的unique Toghter完成:
Meta:
unique_together = (author, post)
或者,也可以在视图中通过以下方式完成:
register_exist = Publications.objects.filter(...).exists()
if register_exist == False:
#Code to save the info
使用这些方法的优缺点是什么?简而言之,属性创建一个查询集,而属性用于过滤给定条件下的查询集。
换句话说,如果您在模型中同时应用了unique\u
功能,即使您尝试这样做,也无法打破该约束(技术上可能,但是)。简而言之,该属性创建一个属性,而该属性用于过滤查询集
以满足给定条件。
换句话说,如果您在模型中同时应用了unique\u
功能,即使您尝试这样做,也无法打破该约束(技术上可能,但是)。Meta:
unique_together=(作者、帖子)
在数据库级别进行约束。这使得无论输入数据的视图是什么,数据总是一致的
但是另一个:
register\u exist=Publications.objects.filter(…).exists()
如果寄存器_exist==False:
#保存信息的代码
在应用程序级别进行约束。查询和检查记录是否存在可能会产生成本。当有人在没有此步骤的情况下添加新记录时(由于偶然或意外),应用程序中的数据可能不一致,这使得数据不再一致。Meta:
unique_together=(作者、帖子)
在数据库级别进行约束。这使得无论输入数据的视图是什么,数据总是一致的
但是另一个:
register\u exist=Publications.objects.filter(…).exists()
如果寄存器_exist==False:
#保存信息的代码
在应用程序级别进行约束。查询和检查记录是否存在可能会产生成本。当有人在没有此步骤的情况下添加新记录时(由于偶然或意外),应用程序中的数据可能不一致,这使得数据不再一致