Описание проблемы
У меня есть модель с именем 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
, который, как я полагал, потребовал, чтобы строка была ТОЧНО той, которую я извлек для нее, чтобы обновить запись.Это не то, что на самом деле происходит, однако.Master List
перезаписывается на MASTER LIST
...
Любые предложения приветствуются!
Обновление: Я обновил код для использования __exact
и STILLзаписи, перезаписанные другими ключами ...