我有一个具有多个字段的模型,其中数据大部分是文本类型。我想验证一下,从现在开始,如果要添加新记录,则该记录应基于3个字段是唯一的。这里的一个字段是另一个表中的一对多字段。
我可以尝试获取所有记录并开始使用for循环检查它们。我尝试使用注释,但是如果记录已在表中,这似乎会有所帮助,但是我想在添加之前进行此验证。我需要一种快速的验证方法。
class Product(models.Model):
brand = models.TextField(default='{}', null=True)
sub_brand = models.CharField(null=True)
.
.
.
class ProductNetWeight(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='product_net_weight')
net_weight = models.CharField(null=True)
答案 0 :(得分:0)
首先,您需要修改模型以保证唯一性:
class Product(models.Model):
brand = models.TextField(default='{}', null=True)
sub_brand = models.CharField(null=True)
.
.
.
class Meta:
unique_together = ['brand', 'sub_brand']
然后,在插入新产品(例如un)时,可以像这样使用get_or_create
:
product, created = Product.objects.get_or_create(brand='my brand', sub_brand='my sub brand')
如果该产品已经存在,它将在product
中返回,并且created
将是False
,否则它将返回一个新产品,而created
将返回成为True