Django从另一个模型保存方法创建模型实例

时间:2014-11-01 00:08:45

标签: django django-models

我有一个与目录模型具有OnetoOne关系的文章模型。是否可以在文章的save方法中创建Catalog的实例。我想附上一个同名目录的文章,最容易同时创建这些目录。

这是我的目录类:

class Catalog(models.Model):
    name = models.CharField(max_length=100)
    price = models.IntegerField

    def __unicode__(self):
        return self.name

文章类:

class Article(models.Model):
  catalog = models.OneToOneField(Catalog, related_name='article_products', blank=True, null=True)
  title = models.CharField(max_length=200)
  abstract = models.TextField(max_length=1000, blank=True)
  full_text = models.TextField(blank=True)
  proquest_link = models.CharField(max_length=200, blank=True, null=True)
  ebsco_link = models.CharField(max_length=200, blank=True, null=True)

  def __unicode__(self):
      return unicode(self.title)


  def save(self, *args, **kwargs):
      self.full_text = self.title
      super(Article, self).save(*args, **kwargs)

我想在保存方法中使用与此类似的逻辑:我不确定它是否可行

cat = Catalog.create(title = self.title)
      cat.save()

1 个答案:

答案 0 :(得分:1)

您可以使用post_save signal在创建文章对象时创建目录对象。这将确保创建目录对象,而不必在文章模型的保存方法中包含不相关的代码。

from django.db.models.signals import post_save

# method for updating
def create_catalog(sender, instance, created, **kwargs):
     if instance and created: 
         #create article object, and associate


post_save.connect(create_catalog, sender=Article)