2015-11-04 2 views
0

У меня есть CreateView, который создает объект Model1. Мне нужно создать другой объект (в этом представлении), который будет иметь Model1 как ForeignKey.Django, как создать объект в CreateView, вручную

from .models import Model1, Model2 

class Creating(CreateView): 
    model = Model1 
    fields = ["field"] 

    def form_valid(self, form): 
     # how to create here something like this: 
     # model2 = Model2.create(field_from_model2 = Model1_object_which_was_created_in_this_View?) 
     return super(Upload, self).form_valid(form) 

ответ

2

Когда super() вызывается для CreateView, объект сохраняется как self.object. Вы можете позвонить super(), но еще не вернули ответ. Затем вы можете создать второй объект, используя self.object. Затем, наконец, верните ответ.

class Creating(CreateView): 
    model = Model1 
    fields = ["field"] 

    def form_valid(self, form): 
     response = super(Creating, self).form_valid(form) 
     object2 = Model2.objects.create(
      model1=self.object, 
      # other fields 
     ) 
     return response 
Смежные вопросы