django сохраняет данные в базе данных только при соблюдении определенных условий - PullRequest
2 голосов
/ 23 сентября 2011

У меня есть функция python, которая собирает некоторые данные с нескольких разных веб-сайтов, и я хочу сохранить эти данные в моей базе данных, только если выполнено определенное условие. А именно, очищенные данные следует сохранять только в том случае, если комбинация поля местоположения и даты уникальна

Так что, на мой взгляд, у меня есть новая переменная местоположения и переменная даты, и, по сути, мне просто нужно проверить эту комбинацию значений с тем, что уже находится в базе данных. Если эта комбинация уникальна, сохраните ее. Если это не так, то ничего не делать.

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

Я довольно новичок в django, поэтому я просто не знаю, как выполнить такой запрос к базе данных.

1 Ответ

1 голос
/ 23 сентября 2011

Вы хотите сочетание двух вещей.Сначала вы хотите, чтобы внутренний класс 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()

Я надеюсь, что вы начали.Как всегда, вы знаете свои потребности лучше, чем я, поэтому не копируйте этот пример вслепую, а адаптируйте его под свои потребности.

Документация:

...