Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 17, 2016 17:52:50

MightyDen
Зарегистрирован: 2016-10-24
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

django save() как update

Уважаемые подскажите, чего то я не до понимаю.
В документации написано, что при вызове методе save() если такой primary key уже существует, то метод обновит такую запись, а не добавит новую. Получается я что-то делаю не так, раз моими записи в Postgre не обновляется.

models.py

 class Sheduler(models.Model):
    job_id = models.OneToOneField(Jobs, primary_key=True, unique=True, db_column="job_id")
    Mo = models.ForeignKey(TypeBackup, related_name="Job_in_Mon", default=0, verbose_name="Пн", db_column="Mo")
    Tu = models.ForeignKey(TypeBackup, related_name="Job_in_Tue", default=0, verbose_name="Вт", db_column="Tu")
    We = models.ForeignKey(TypeBackup, related_name="Job_in_Wen", default=0, verbose_name="Ср", db_column="We")
    Th = models.ForeignKey(TypeBackup, related_name="Job_in_Thu", default=0, verbose_name="Чт", db_column="Th")
    Fr = models.ForeignKey(TypeBackup, related_name="Job_in_Fri", default=0, verbose_name="Пт", db_column="Fr")
    Sa = models.ForeignKey(TypeBackup, related_name="Job_in_Sat", default=0, verbose_name="Сб", db_column="Sa")
    Su = models.ForeignKey(TypeBackup, related_name="Job_in_Sun", default=0, verbose_name="Вс", db_column="Su")

form.py
 class CreateJobSheduler(ModelForm):
    class Meta:
        model = Sheduler
        fields = "__all__"

view.py
 def addtaskinshedule(request):
    if request.POST:
        form = CreateJobSheduler(request.POST)
        if form.is_valid():
            form.save()
    return redirect('/jobs/')

Предположу, что надо явно указать “pk”, если так, то как это правильно сделать

Офлайн

#2 Дек. 17, 2016 20:55:19

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

django save() как update

Тут все просто, если у form.instanse есть id, то объект обновляетcя, если нет - создается.
Если вы хотите изменить уже существующий объект, то вы разумеется знаете его id (ну а по какому еще критерию вы собираетесь строить запрос на обновление?). Айдишник должен попасть в форму, то есть должен присутствовать в запросе.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version