所有
我有一套相关的模型:
class Foo(models.Model):
fooName = models.CharField()
bars = models.ManyToManyField("Bar")
class Bar(models.Model):
barName = models.CharField()
当我创建一个新的时,我希望它有一组默认数据。这对于普通字段来说非常容易。但我不知道如何处理关系领域。让我假装我希望每个foo都用名为“我是一个foo”和一组三个条形图进行初始化,每个条形图都有特定的名称(例如,“我是酒吧一个”,“我是酒吧二”,“我是我是三点。“)。
def Initialize(self)
self.fooName = "I am a foo"
self.bars = ?!?
我只是不确定如何解决这个问题。有什么建议吗?
答案 0 :(得分:3)
您不能在没有主键的模型实例上使用多对多关系。
如果要设置默认的初始数据,则应use fixtures。
答案 1 :(得分:3)
你可以使用django的signals来做到这一点。每次创建Foo
模型的实例时,还要创建所需的其他信息:
class Foo(models.Model):
...
from django.db.models.signals import post_save
from signals import create_initial_data
post_save.connect(create_initial_data, sender=Foo)
并在名为signals.py
的文件中
from models import Bar
def create_initial_data(sender, instance, created, raw):
if created and sender == 'Foo':
bar_1 = Bar(...)
bar_2 = Bar(...)
...
bar_1.save()
bar_2.save()
...
instance.bars.add(bar_1, bar_2, ...)
instance.save()