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:
#保存信息的代码
在应用程序级别进行约束。查询和检查记录是否存在可能会产生成本。当有人在没有此步骤的情况下添加新记录时(由于偶然或意外),应用程序中的数据可能不一致,这使得数据不再一致