Plone 5.1 - How can I get Publish Traverse work with my AutoExtensible Form?

I'm trying to use Publish Traverse for my AutoExtensible and for some reason, I can't get my form to set its fields. The form itself is acting as an 'edit' form.
I have ignoreContext set to True and getContent() to return the object from a query.

asset.py - Contains object class

from zope import schema
from plone.supermodel import model
from plone.autoform import directives
from plone.formwidget.autocomplete import AutocompleteFieldWidget
from my.product.myautovocabulary import MyAutoVocabulary

class IAsset(model.Schema):
      """fields stored in database"""
    a = schema.TextLine(title=u"A",
                        required=True,)

    directives.widget('b',AutocompleteFieldWidget)
    b = schema.Choice(title=u"B",
                        required=MyAutoVocabulary(), )

class Asset(object):
    a = None
    b = None

    def __init__(self,a=None,b=None):
        self.a = a
        self.b = b

assetforms.py: Contains edit form in addition to add form

from z3c.form import form, button
from zope.component import getUtility
from zope.interface import implementer
from zope.publisher.interfaces.browser import IPublishTraverse
from plone.autoform.form import AutoExtensibleForm
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from my.product.content.asset import IAsset
from my.product.utilities.interfaces import IAssetCatalog

@implementer(IPublishTraverse):
class EditAssetForm(AutoExtensibleForm, form.Form):
    schema = IAsset
    ignoreContext = True
    label = u"Edit Asset"
    description = u"Form for editing an asset"
    form_name = editasset
    __asset_id = None

    def publishTraverse(self, request, name):
        self.__asset_id = name
        return self
            
    def getContent(self):
        catalog = getUtility(IAssetCatalog, 'assetCatalog')
        asset = catalog.queryForType(Asset,Asset_ID = self.__asset_id)[0]
        return asset


    def updateWidgets(self, EditAssetForm):
        super(EditAssetForm, self).updateWidgets()

    @buttonAndHandler(u'Submit')
    def handleApply(self, action):
        data, errors = self.extractData()
        if errors:
            return False
        catalog = getUtility(IAssetCatalog, 'assetCatalog')
        catalog.updateAsset(self.__asset_id, a=data.get('a'), b=data.get('b'))
        redirect_url = self.context.absolute_url() + "/viewasset/"+self.__asset_id
        self.request.response.redirect(redirect_url)

I have an adapter class for IAsset.

formadapters.py

from zope import interface
from zope import component
from my.product.content.asset import IAsset

class AssetFormAdapter(object):
    interface.implements(IAsset)
    component.adapts(interface.Interface)

In my configure.zcml, I have:

    <adapter factory=".formadapters.AssetFormAdapter"/>
    
    <browser:page
        for="my.product.content.assettracker.IAssetTracker"
        name="addasset"
        class="my.product.views.assetforms.AddAssetForm"
        permission="zope2.View"
    />       

    <browser:page
        for="my.product.content.assettracker.IAssetTracker"
        name="editasset"
        class="my.product.views.assetforms.EditAssetForm"
        permission="zope2.View"
    />

The add form is working as it should, so I know my interface adapts to the database correctly.
However, the edit form won't fill in the fields automatically after getContent() is called.

I know getContent() and publishTraverse() are called though because I tried placing print statements in publish traverse (where __asset_id is being set) and getContent() (before return asset).

What am I doing wrong?

Edit: I fixed typos in my question. Also I tried
class EditForm(AutoExtensibleForm,form.EditForm) and I got the same results where the fields just won't fill in.

I figured it out. I forgot to add implements(IAsset) to my Asset class.

class Asset(object):
    implements(IAsset)

and also ignoreContext needed to be set to False.