MariaDB 10.1.34 (running fine after explicitly creating the database with utf8 character encoding)
The only modifications I've made are changing the timezone in settings.py and changing the database dictionary in local_settings.py.
I logged into the admin interface, navigated to add a new richtext page, filled in the title and body, and clicked save. A debug-friendly error page was then returned, and the following text was in the console.
[12/Nov/2018 14:28:08] "POST /admin/admin_keywords_submit/ HTTP/1.1" 200 1
Internal Server Error: /admin/pages/richtextpage/add/
Traceback (most recent call last):
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner
response = get_response(request)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 128, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/contrib/admin/options.py", line 575, in wrapper
return self.admin_site.admin_view(view)(*args, **kwargs)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/utils/decorators.py", line 142, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/contrib/admin/sites.py", line 223, in inner
return view(request, *args, **kwargs)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/mezzanine/pages/admin.py", line 66, in add_view
return super(PageAdmin, self).add_view(request, **kwargs)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/contrib/admin/options.py", line 1554, in add_view
return self.changeform_view(request, None, form_url, extra_context)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/utils/decorators.py", line 62, in _wrapper
return bound_func(*args, **kwargs)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/utils/decorators.py", line 142, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/utils/decorators.py", line 58, in bound_func
return func.__get__(self, type(self))(*args2, **kwargs2)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/contrib/admin/options.py", line 1451, in changeform_view
return self._changeform_view(request, object_id, form_url, extra_context)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/contrib/admin/options.py", line 1492, in _changeform_view
self.save_related(request, form, formsets, not add)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/contrib/admin/options.py", line 1049, in save_related
form.save_m2m()
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/forms/models.py", line 439, in _save_m2m
f.save_form_data(self.instance, cleaned_data[
f.name])
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/mezzanine/generic/fields.py", line 206, in save_form_data
super(KeywordsField, self).save_form_data(instance, data)
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 838, in save_form_data
File "/home/mike/projects/plab/venv/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py", line 509, in __set__
% self._get_set_deprecation_msg_params(),
TypeError: Direct assignment to the reverse side of a related set is prohibited. Use +.set() instead.
[12/Nov/2018 14:28:08] "POST /admin/pages/richtextpage/add/ HTTP/1.1" 500 146350
Attempting to debug this in pycharm, I found that the item being saved was a 'keyword' of ''. I had not entered any keywords in the form, so it appears the empty string is saved, anyway. I've read through both django and mezzanine code in the callstack, and it seems like this is related to django's database layer and ManyToMany relationships. But it seems the ultimate saving of the empty keyword is a Field.setattr() call, which is neither an = or a .set(). And I don't know what the '+' character is from.
Can anyone help me to understand what needs to be fixed, here? Since I haven't actually written any code, I'm tempted to think either mezzanine or django needs a pull request. Or perhaps there's a compatibility issue between versions of django and mezzanine? I haven't seen anything obvious in git diffs. But until I understand better, I wouldn't know how to go about fixing it. I have found a few slightly similar things in this group and on stackexchange, but nothing that matches. The same behavior occurs if I run the server and try to add a blog post rather than a richtextpage. And I get the same behavior on a different server running debian 8 rather than ubuntu 18.