Django 仅在满足特定条件时保存数据到数据库
我有一个Python函数,它可以从几个不同的网站上抓取一些数据。我想把这些数据保存到我的数据库里,但前提是要满足一个条件。也就是说,只有当地点和日期的组合是唯一的时候,才保存这些抓取的数据。
在我的视图中,我有一个新的地点变量和一个日期变量。基本上,我只需要把这个值组合跟数据库里已有的记录进行对比。如果这个组合是唯一的,那就保存它。如果不是,那就什么都不做。
class Speech(models.Model):
location = models.ForeignKey(Location)
speaker = models.CharField(max_lenth=100)
date = models.DateField
我对Django还不太熟悉,所以不太确定该如何执行这种数据库查询。
1 个回答
1
你想要实现两个功能。首先,你需要一个内部的 Meta
类来确保数据库中的数据是唯一的:
class Speech(models.Model):
location = models.ForeignKey(Location)
speaker = models.CharField(max_length=100)
date = models.DateField()
class Meta:
unique_together = ('location', 'date')
然后,当你在视图中处理数据时,你希望使用默认模型管理器的 get_or_create
方法:
speech, new = Speech.objects.get_or_create(
location=my_location_string,
date=my_datetime_variable,
)
if new:
speech.speaker = my_speaker_string
speech.save()
希望这些信息能帮到你。记住,你对自己的需求比我更了解,所以不要盲目复制这个例子,而是根据自己的需要进行调整。
相关文档: