Did you try what I suggested for : https://groups.google.com/forum/#!topic/mezzanine-users/CBqb6srpmqU ?
The issue seems the same: using a relationship field with a string parameter in the EXTRA_MODEL_FIELDS both relies on the class_prepared signal. Re-raising it should help. Le vendredi 20 mars 2015 03:14:09 UTC+1, Alexander Kominek a écrit : > > Looking deeper, Mezzanine seems to be simply looking for the field type, > then passing the arguments into the Django method contribute_to_class for > the sender model. (See > http://blog.jupo.org/2011/11/10/django-model-field-injection/). I'm going > to pursue this further, but it looks like Django itself may be broken when > it comes to ManyToManyField. > > > > On Tuesday, March 17, 2015 at 12:12:55 AM UTC-6, Alexander Kominek wrote: >> >> I'm seeing the same thing, trying to ad a ManyToManyField to all pages. >> From my settings.py: >> >> EXTRA_MODEL_FIELDS = ( >> ( >> "mezzanine.pages.models.Page.blog_categories", #let blog posts >> be displayed below content on pages >> "ManyToManyField", >> ("blog.BlogCategory",), >> {"related_name":'pages', >> "blank":True, >> "null":True,}, >> ), >> ) >> >> When I run python manage.py schemamigration pages --auto I get the >> following error: >> >> Traceback (most recent call last): >> File "/path/to/myproject/manage.py", line 28, in <module> >> execute_from_command_line(sys.argv) >> File "/path/to/python2.7/django/core/management/__init__.py", line 399, >> in execute_from_command_line >> utility.execute() >> File "/path/to/python2.7/django/core/management/__init__.py", line 392, >> in execute >> self.fetch_command(subcommand).run_from_argv(self.argv) >> File "/path/to/python2.7/django/core/management/base.py", line 242, in >> run_from_argv >> self.execute(*args, **options.__dict__) >> File "/path/to/python2.7/django/core/management/base.py", line 285, in >> execute >> output = self.handle(*args, **options) >> File "/path/to/python2.7/south/management/commands/schemamigration.py", >> line 159, in handle >> action.add_forwards(forwards_actions) >> File "/path/to/python2.7/south/creator/actions.py", line 39, in >> add_forwards >> forwards.append(self.forwards_code()) >> File "/path/to/python2.7/south/creator/actions.py", line 524, in >> forwards_code >> "left_field": self.field.m2m_column_name()[:-3], # Remove the _id >> part >> TypeError: 'NoneType' object has no attribute '__getitem__' >> >> >> I've tried >> >> On Tuesday, February 3, 2015 at 11:34:20 AM UTC-7, [email protected] >> wrote: >>> >>> >>> Hi everyone, >>> >>> I'm getting the same error exactly while running the schemamigration >>> command: >>> >>> TypeError: 'NoneType' object has no attribute '__getitem__' >>> >>> >>> In my case the model is cartridge.shop.models.Product but the situation >>> is really really close: >>> >>> EXTRA_MODEL_FIELDS = ( >>> # Four-item sequence for one field injected. >>> ( >>> # Dotted path to field. >>> "cartridge.shop.models.Product.tags", >>> # Dotted path to field class. >>> "ManyToManyField", >>> # Positional args for field class. >>> ('theme.Tag', ), >>> # Keyword args for field class. >>> {"related_name": "products", "blank": True, "null": True}, >>> ), >>> ) >>> >>> And the theme.Tag model is: >>> >>> class Tag(models.Model): >>> """ >>> """ >>> nome = models.CharField(_("Nome"), blank=True, max_length=100) >>> >>> >>> Has anyone found the problem or what's wrong with this setup? >>> >>> Thank you, >>> Maurizio >>> >>> >>> Il giorno venerdì 1 agosto 2014 16:59:19 UTC+2, Ryan Sadwick ha scritto: >>>> >>>> Make sure you run a south schemamigration on the blog app itself: >>>> >>>> Something like: >>>> manage.py schemamigration blog --auto >>>> >>>> >>>> >>>> >>>> >>>> On Tuesday, July 29, 2014 10:14:18 AM UTC-4, Beau Severson wrote: >>>>> >>>>> I was also wondering the answer to this. I'm trying to add a new M2M >>>>> field to the BlogPost model and I keep getting the exact same error. Is >>>>> this a bug for mezzanine using south? My EXTRA_MODEL_FIELDS contains the >>>>> following: >>>>> >>>>> ( >>>>> "mezzanine.blog.models.BlogPost.industry", >>>>> "ManyToManyField", # type of field to add >>>>> ("users.Industry",), >>>>> {"blank": True, "null": True}, >>>>> ), >>>>> >>>>> Everytime I attempt the migration though I get the same error you are >>>>> seeing. >>>>> >>>>> On Friday, January 11, 2013 8:40:05 AM UTC-6, Sam wrote: >>>>>> >>>>>> >>>>>> Hello, >>>>>> >>>>>> In the admin interface i would like it to be possible to select >>>>>> multiple genres for blogposts. These genres are from a different model >>>>>> so I >>>>>> used the technique described in the manual. >>>>>> >>>>>> I try to add a custom ManyToManyField to the blog app using the >>>>>> following syntax in my settings.py: >>>>>> >>>>>> ( >>>>>> "mezzanine.blog.models.BlogPost.genre", >>>>>> "ManyToManyField", >>>>>> ('blog_custom.Genre',), >>>>>> {"null":True, "blank": True,}, >>>>>> ), >>>>>> >>>>>> I started a custom app called blog_custom where I'd like to store the >>>>>> migrations. I have defined my Genre model as follows: >>>>>> >>>>>> class Genre(models.Model): >>>>>> name = models.CharField(max_length=300) >>>>>> >>>>>> Given the fact that I use South in this project, I have to perform a >>>>>> migration at which point I get the following error: >>>>>> TypeError: 'NoneType' object has no attribute '__getitem__' >>>>>> >>>>>> After some investigation I found out that this issue might actually >>>>>> be related to South, or related to the way the arguments are passed on >>>>>> from >>>>>> mezzanine to South. If I, for example, create the intermediare table >>>>>> that >>>>>> should have been created with the migration manually, and run the >>>>>> migration >>>>>> after this fact, it does complete since south does not have to create >>>>>> it. >>>>>> The problem with this approach is that Django will not use this >>>>>> intermediary model in the admin interface, which is what I need. >>>>>> >>>>>> Any thoughts? >>>>>> >>>>>> Thanks >>>>>> >>>>> -- 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.
