Работа с экземпляром в сеансе перед сохранением в базе данных - PullRequest
2 голосов
/ 04 ноября 2011

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

Мой класс модели выглядит так:

class Proposta(models.Model):
    Modelo = models.ForeignKey("ModeloVersao", verbose_name="Modelo")
    Pacotes = models.ManyToManyField("PacoteModelo", null=True, blank=True)
    Opcionais = models.ManyToManyField("ItemModelo", null=True, blank=True)
    RevestimentoInterno = models.ForeignKey("RevestimentoInternoModelo", verbose_name="Revestimento Interno")
    Cor = models.ForeignKey("CorModelo")
    CorSecundaria = models.ForeignKey("CorModeloSecundaria", verbose_name="Cor secundária", null=True, blank=True)
    Data = models.DateTimeField(auto_now_add = True)
    Status = models.CharField("Status", choices=STATUS_PROPOSTA, max_length=10)
    Cliente = models.ForeignKey("Cliente")

Вот моя проблема: Когда я пытаюсь добавить или извлечь поля m2m, он, очевидно, выдает ошибку ValueError с сообщением Экземпляр Proposta должен иметь значение первичного ключа, прежде чем можно будет использовать отношение многие ко многим.

Я успешно получил желаемый результат, создав свой экземпляр obj с pk = 0, но я уверен, что это не лучший способ, если он есть.

Существует ли способ сделать это без обмана, как это.

Любая помощь будет отличной.

Спасибо

1 Ответ

1 голос
/ 04 ноября 2011

Вы можете найти ответы на этот вопрос полезными.

Сводка для быстрого ознакомления:

Я мог бы добавить, что документация конкретно объясняет, как обращаться с полями M2M, в разделе, который объясняет Метод save() .

Из них я рекомендую использовать ModelForms.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...