繁体   English   中英

django仅在满足某些条件时才将数据保存在数据库中

[英]django save data in database only when certain conditions are met

我有一个python函数,可以从几个不同的网站上抓取一些数据,并且仅在满足特定条件的情况下,我才想将这些数据保存到数据库中。 也就是说,只有在位置和日期字段的组合唯一的情况下,才应保存抓取的数据

因此,在我看来,我有一个新的location变量和date变量,实际上,我只需要对照数据库中已有的值测试这种值组合。 如果此组合是唯一的,则保存它。 如果不是,则什么也不做。

class Speech(models.Model):
    location = models.ForeignKey(Location)
    speaker = models.CharField(max_lenth=100)
    date = models.DateField

我对Django很陌生,所以我不确定如何执行这种数据库查询。

您需要结合两件事。 首先,您需要一个内部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()

我希望这可以帮助您入门。 与往常一样,您比我更了解自己的需求,所以不要盲目复制此示例,而要使其适应您的需求。

文档:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM