我有一个与目录模型具有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()
答案 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)