Thank you for the reply Stephen. I don't know if I'm missing something but I'm still having some problems with this.
You say: > You'll see an "Add product" dropdown list (presumably with only one item > in it in your case, namely BaseProduct), which is how you choose which type > of product you're adding. > But no matter what I do I don't see any such dropdown, I've created an example project based on the guide from https://github.com/stephenmcd/cartridge/blob/master/docs/components.rst and have pushed this up to a simple github repo at https://github.com/petedermott/cartridge-example. In short, my models.py look like this: from django.db import models from cartridge.shop.models import Product # Create your models here. class SubclassedProduct(Product): test = models.CharField(blank=True, null=True, max_length=255) and my admin.py looks like this: from django.contrib import admin from cartridge.shop.admin import ProductAdmin from test_products.models import SubclassedProduct # Register your models here. admin.site.register(SubclassedProduct, ProductAdmin) Is there something obvious I'm missing? On Monday, February 6, 2017 at 12:34:37 AM UTC, Stephen McDonald wrote: > > Hi there, > > Subclassing the product model was previously not a supported feature - I > imagine you had to do some extensive hacking to get that working in the > actual site. > > It now is a supported feature however, much like the Page model in > Mezzanine can be subclasses to create custom page types, custom products > now work the same in the development version of Cartridge. > > The good news is that what you've done should mostly work now - it's just > that your existing products are missing a value that identifies them as > your BaseProduct custom product type - if you inspect the DB somehow, > you'll see the table for the Product model has a "content_type" field (if I > recall correctly), and it stores a string name for the type of product it's > related to, in your case I think the value would be "baseproduct", but the > best way to know for sure would be to add a new product of "BaseProduct" > type, and see what value gets stored for that. > > BTW the redirection is occurring because with this new version, *all* > product subclasses in the admin will redirect to one listing page where > they all get managed. You'll see an "Add product" dropdown list (presumably > with only one item in it in your case, namely BaseProduct), which is how > you choose which type of product you're adding. You'll need to use that to > perform the check I just mentioned. Given the way the admin works now, > you'll also be able to remove BaseProduct from the ADMIN_MENU_ORDER setting > you have, since that's redundant. > > > > > > On Thu, Jan 26, 2017 at 1:22 AM, Pete Dermott <[email protected] > <javascript:>> wrote: > >> Apologies if this this an existing issue or I'm missing something but I >> am having a little trouble with my cartridge installation and my custom >> product types, I am running on the current versions of Mezzanine and >> Cartridge from the GitHub repos. >> >> Previously I have declared my custom product type in the settings.py file >> as follows: >> >> ADMIN_MENU_ORDER = ( >> ... >> ("My Shop", ( >> "my_shop.BaseProduct", >> )), >> >> ... >> >> >> .. in my models as: >> >> from cartridge.shop.models import Product, Category, ProductVariation, >> ProductImage >> >> >> ... >> >> >> class BaseProduct(Product): >> cadfile = fields.FileField(upload_to="product/cadfile", >> extensions=(".dwg",), blank=True, null=True, help_text="Format: Files should >> be named in all lower case with leading zeros and ONLY product codes e.g >> rg09.dwg") >> pdffile = fields.FileField(upload_to="product/pdffile", blank=True, >> null=True, help_text="Format: Files should be named in all lower case with >> leading zeros and ONLY product codes e.g pm01.pdf") >> product_code = models.CharField(max_length=8, help_text="Format: All >> caps, no spaces, include leading zero's, e.g DC01B") >> >> ... >> >> >> >> ... and in the admin as: >> >> from cartridge.shop.admin import CategoryAdmin, ProductAdmin, >> ProductVariation, ProductOption, Order >> >> >> ... >> >> >> class BaseProductAdmin(ProductAdmin): >> fieldsets = product_fieldsets >> >> additional_fieldsets = ("product_height", "product_width", >> "product_projection", "product_diameter", "product_length", >> "cornice_picture", "cornice_profile_picture", >> "cornice_wall_height", "cornice_ceiling_projection", >> "cornice_pattern_repeat", "internal_height", >> "internal_width", "priority",) >> >> fieldsets.append( >> (_("Additional"), { >> "fields": tuple(additional_fieldsets), >> })) >> >> list_display = product_list_display >> list_filter = ("status", "available", "categories", "product_type", >> "updated") >> >> def has_module_permission(self, request): >> for (name, items) in settings.ADMIN_MENU_ORDER: >> if "stevensons_shop.BaseProduct" in items: >> return True >> return False >> >> >> admin.site.register(BaseProduct, BaseProductAdmin) >> >> >> >> This used to work fine in previous versions of the system (those >> installed directly from pip), however I wanted to take advantage of some of >> the fixes in newer versions. >> >> However this has had the adverse affect of breaking my admin area. >> Whereas before I could simply click on the "Base product" sidebar link and >> get taken to my admin view I now am immediately redirected to the generic >> /admin/shop/product view that only contains the basic information for my >> product and none of my extended fields, I'm aware that there have been some >> pretty major changes that happened in commit #8d3ac6b >> <https://github.com/stephenmcd/cartridge/commit/8d3ac6bef9ca4f557edcd4d714a02f69644570dc#diff-79b579f857f436c0b1f13b7397ed6c00> >> however >> I am currently at a loss trying to figure out what I need to do to get this >> working again. >> >> Any suggestions are greatly appreciated. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Mezzanine Users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > Stephen McDonald > http://jupo.org > -- You received this message because you are subscribed to the Google Groups "Mezzanine Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
