我有一个名为SourceData
的模型,如下所示:
class SourceData(models.Model):
seller = models.ForeignKey(DataSourceStatus, null=True, default=True, related_name='source_data')
sessions = models.FloatField(null=True, default=None)
bounce_rate = models.FloatField(null=True, default=None)
goal_completions_all = models.FloatField(null=True, default=None)
goal_conversion_rate_all = models.FloatField(null=True, default=None)
transactions = models.FloatField(null=True, default=None)
transaction_revenue = models.FloatField(null=True, default=None)
data_date = models.DateField()
source = models.CharField(max_length=100)
当我尝试填充它时,我遍历一个记录列表,这些记录是字典对象,每个字段都有一个区分大小写的source
字段。有时,这些source
字段看起来像Master List
或MASTER LIST
,我想保留外壳。
这是我的人口方法:
source_data, created = SourceData.objects.update_or_create(
seller=data_source_status,
data_date=date_record,
source__exact=sub.get('source', ' '),
defaults={
'seller': data_source_status,
'data_date': date_record,
'sessions': sub.get('sessions', 0),
'bounce_rate': sub.get('bounceRate', 0),
'goal_completions_all': sub.get('goalCompletionsAll', 0),
'goal_conversion_rate_all': sub.get('goalConversionRateAll', 0),
'transactions': sub.get('transactions', 0),
'transaction_revenue': sub.get('transactionRevenue', 0),
'source': sub.get('source', ' '),
}
)
在查看了大量文档和StackOverflow文章之后,我将__eexact
添加到了source
param,我认为这将要求字符串完全是我检索到的更新记录。然而,这不是实际发生的事情。 Master List
MASTER LIST
任何建议都会非常感激!
更新:我更新了代码以使用__exact
和STILL,其他密钥覆盖了记录......