将模型对象添加到父表

时间:2011-05-28 18:27:42

标签: django django-models

我正在创建一个表单,其中有人输入网络的networklocationadministrators。这是我的模特 -

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 个答案:

答案 0 :(得分:1)

要自定义处理表单对象,请使用form.save(commit=False)

  

此save()方法接受可选项   commit keyword参数,接受   无论是真还是假。如果你打电话   save()with commit = False,然后它会   返回一个尚未存在的对象   保存到数据库中。在这种情况下,   你可以在上面调用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())。