from django.db import models
from django.utils.translation import ugettext_lazy as _
from wagtail.wagtailadmin.edit_handlers import FieldPanel
from wagtail.wagtailcore.models import Page
from wagtail.wagtailimages.edit_handlers import ImageChooserPanel


class Category(Page):
    """
    The Oscars Category as a Wagtail Page
    This works because they both use Treebeard
    """
    name = models.CharField(_('Name'), max_length=255, db_index=True)
    description = models.TextField(_('Description'), blank=True)
    image = models.ForeignKey(
        'wagtailimages.Image',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name='+'
    )

    content_panels = Page.content_panels + [
        FieldPanel('name', classname='full'),
        FieldPanel('description', classname='full'),
        ImageChooserPanel('image')
    ]

from oscar.apps.catalogue.models import *  # noqa

from django.db import models
from django.utils.translation import ugettext_lazy as _
from wagtail.wagtailadmin.edit_handlers import FieldPanel
from wagtail.wagtailcore.models import Page
from wagtail.wagtailimages.edit_handlers import ImageChooserPanel


class Category(Page):
    """
    The Oscars Category as a Wagtail Page
    This works because they both use Treebeard
    """
    name = models.CharField(_('Name'), max_length=255, db_index=True)
    description = models.TextField(_('Description'), blank=True)
    image = models.ForeignKey(
        'wagtailimages.Image',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name='+'
    )

    content_panels = Page.content_panels + [
        FieldPanel('description', classname='full'),
        ImageChooserPanel('image')
    ]

    def save(self, *args, **kwargs):
        self.name = self.title
        super(Category, self).save(*args, **kwargs)

from oscar.apps.catalogue.models import *  # noqa

Set name field on save
Set name field on save

  from django.db import models
  from django.utils.translation import ugettext_lazy as _
  from wagtail.wagtailadmin.edit_handlers import FieldPanel
  from wagtail.wagtailcore.models import Page
  from wagtail.wagtailimages.edit_handlers import ImageChooserPanel
  
  
  class Category(Page):
      """
      The Oscars Category as a Wagtail Page
      This works because they both use Treebeard
      """
      name = models.CharField(_('Name'), max_length=255, db_index=True)
      description = models.TextField(_('Description'), blank=True)
      image = models.ForeignKey(
          'wagtailimages.Image',
          null=True,
          blank=True,
          on_delete=models.SET_NULL,
          related_name='+'
      )
  
      content_panels = Page.content_panels + [
-         FieldPanel('name', classname='full'),
          FieldPanel('description', classname='full'),
          ImageChooserPanel('image')
      ]
  
+     def save(self, *args, **kwargs):
+         self.name = self.title
+         super(Category, self).save(*args, **kwargs)
+ 
  from oscar.apps.catalogue.models import *  # noqa
  
Set name field on save
## Code Before:
from django.db import models
from django.utils.translation import ugettext_lazy as _
from wagtail.wagtailadmin.edit_handlers import FieldPanel
from wagtail.wagtailcore.models import Page
from wagtail.wagtailimages.edit_handlers import ImageChooserPanel


class Category(Page):
    """
    The Oscars Category as a Wagtail Page
    This works because they both use Treebeard
    """
    name = models.CharField(_('Name'), max_length=255, db_index=True)
    description = models.TextField(_('Description'), blank=True)
    image = models.ForeignKey(
        'wagtailimages.Image',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name='+'
    )

    content_panels = Page.content_panels + [
        FieldPanel('name', classname='full'),
        FieldPanel('description', classname='full'),
        ImageChooserPanel('image')
    ]

from oscar.apps.catalogue.models import *  # noqa

## Instruction:
Set name field on save
## Code After:
from django.db import models
from django.utils.translation import ugettext_lazy as _
from wagtail.wagtailadmin.edit_handlers import FieldPanel
from wagtail.wagtailcore.models import Page
from wagtail.wagtailimages.edit_handlers import ImageChooserPanel


class Category(Page):
    """
    The Oscars Category as a Wagtail Page
    This works because they both use Treebeard
    """
    name = models.CharField(_('Name'), max_length=255, db_index=True)
    description = models.TextField(_('Description'), blank=True)
    image = models.ForeignKey(
        'wagtailimages.Image',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name='+'
    )

    content_panels = Page.content_panels + [
        FieldPanel('description', classname='full'),
        ImageChooserPanel('image')
    ]

    def save(self, *args, **kwargs):
        self.name = self.title
        super(Category, self).save(*args, **kwargs)

from oscar.apps.catalogue.models import *  # noqa
