2011-05-28 1 views
2

Я создаю форму, в которой кто-то вводит network, location и 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):

Это сохранить() метод принимает необязательный совершить аргумент ключевое слово, которое принимает истинным или ложным. Если вы вызываете save() с 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()).

Смежные вопросы