2011-05-28 34 views
2

我创建一个地方有人进入networklocation和网络的administrators形式。这是我的模型 -添加一个模型对象的父表

class Administrator(models.Model): 
    email = models.EmailField() 
    name = models.CharField(max_length=100, blank=True) 

class Network(models.Model): 
    name = models.CharField(max_length=50) 
    location = models.CharField(max_length=50) 
    administrators = models.ManyToManyField(Administrator, blank=True) 

我怎么能创造这样,当网站管理员将管理员的网络,它将立即在Administrator类条目,然后连接起来,即在一个窗体administrators列?

回答

1

为表单对象的加工定制使用form.save(commit=False)

这节省()方法接受一个可选 提交关键字参数,它接受 True或False。如果您用commit = False调用 save(),那么它会将 返回一个还没有被保存到数据库的 的对象。在这种情况下, 由您调用 生成的模型实例上的save()。如果您想要在保存 之前对对象执行自定义 处理,或者如果您想要使用 专用模型保存选项之一,则此为 有用。

来自:https://docs.djangoproject.com/en/1.0/topics/forms/modelforms/#the-save-method


所以,如果你有一个NetworkForm你可以使用commit=False,然后检查你的管理员已经存在,或者他是否需要创建。 get_or_create真的很方便。

然后,您可以在窗体上将administrator设置为新创建或获取的管理员实例并保存表单(使用form.save()form.save_m2m())。

相关问题