Django ORM update_or_create () чувствительность к регистру - PullRequest
0 голосов
/ 08 июня 2018

Описание проблемы

У меня есть модель с именем 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записи, перезаписанные другими ключами ...

...