Django- создать просмотр, получить id, с которым он был сохранен в базе данных return "None", self.object.pk in form_valid is "None"

Я создал представление с помощью createview, где у меня есть форма, это представление имеет url: path('asignacionContact/<int:pk>/',AsignacionCreateView.as_view(), name='assignacion_contact'), я заполняю форму и эффективно она сохраняется в базе данных, но я хочу получить id, с которым она была сохранена в базе данных, поэтому в методе form_valid я пытаюсь получить id с помощью self.object.pk или form.instance.pk , но он возвращает None, как я могу это исправить?

urls.py

app_name = 'gestionAsignacion'

urlpatterns = [
     
    path('asignacionContact/<int:pk>/',AsignacionCreateView.as_view(), name='asignacion_contact'),
    path('detalle/asignacion/<int:pk>',descargarAsignacion.as_view(), name='descargar_asignacion'),
    path('asignacionGeneral/',asignacionGeneral.as_view(), name='asignacion_general'),
    
    
]

model.py

class AsignacionContact(models.Model):
    id = models.IntegerField(primary_key=True)
    idasignacion_general = models.ForeignKey('AsignacionGeneral', models.DO_NOTHING, db_column='idasignacion_general')
    nombre_asignacion = models.CharField(max_length=100)
    fecha_inicio = models.DateField()
    fecha_fin = models.DateField()
    observacion = models.CharField(max_length=255, blank=True, null=True)
    estado = models.IntegerField(blank=True, null=True)

    def __str__(self):
        return self.nombre_asignacion
    
    # def get_absolute_url(self):
    #     print('reverse')
    #     return reverse('gestionAsignacion:asignacion_contact',kwargs={ 'pk': self.pk })

    class Meta:
         managed = False
         db_table = 'asignacion_contact'

view.py

class AsignacionCreateView(CreateView):
    model=AsignacionContact
    form_class=AsignacionForm
    template_name='gestionAsignacion/asignacion_contact.html'
    # success_url = reverse_lazy('gestionAsignacion:asignacion_general')
    
    

    def form_valid(self, form):
        
        isvalid = super().form_valid(form)
        print('form_valid')
        print(form.instance.pk)
        print(self.object.pk)
        return isvalid
        
    
   
    def post(self, request, *args, **kwargs):
        print('post')
        return super().post(request, *args, **kwargs)

    def get_form_kwargs(self):
        kwargs = super(AsignacionCreateView, self).get_form_kwargs()
        kwargs['pk'] = self.kwargs.get('pk')
        return kwargs

    def get_success_url(self):
        print('hola succes')
        print(self.object.id)
        return reverse('gestionAsignacion:asignacion_general')

Согласно документации Django вы можете сохранить и получить id сохранения.

>>> b2 = Blog(name='Cheddar Talk', tagline='Thoughts on cheese.')
>>> b2.id     # Returns None, because b2 doesn't have an ID yet.
>>> b2.save()
>>> b2.id     # Returns the ID of your new object
Вернуться на верх