Why does it have to be abstract? NamedEntity and Entity are also not abstract.
https://github.com/urievenchen/speedy-net/blob/master/speedy/net/accounts/models.py Uri. *Uri Even-Chen* [image: photo] Phone: +972-54-3995700 Email: [email protected] Website: http://www.speedysoftware.com/uri/en/ <http://www.facebook.com/urievenchen> <http://plus.google.com/+urievenchen> <http://www.linkedin.com/in/urievenchen> <http://github.com/urievenchen> <http://twitter.com/urievenchen> On Tue, Dec 13, 2016 at 5:56 PM, GMail <[email protected]> wrote: > Hi! > > First guess - SpeedyComposerNamedEntity is not an abstract model. Meta is > not inherited from NamedEntity, you have to do that explicitly: > > class SpeedyComposerNamedEntity(NamedEntity): > ... > > class Meta(NamedEntity.Meta): > pass > > ... > > > On 13 Dec 2016, at 18:30, Uri Even-Chen <[email protected]> wrote: > > Dear Django Users, > > I'm trying to write the models of Speedy Composer in Django 1.10.4, but I > can't run makemigrations - I get this error message: > > speedy\composer>manage.py makemigrations > SystemCheckError: System check identified some issues: > > ERRORS: > compose.Composition.accompaniment: (models.E006) The field > 'accompaniment' clashes with the field 'accompaniment' from model 'compose. > speedycomposernamedentity'. > compose.Composition.folder: (models.E006) The field 'folder' clashes with > the field 'folder' from model 'compose.speedycomposernamedentity'. > compose.Composition.user: (models.E006) The field 'user' clashes with the > field 'user' from model 'accounts.entity'. > compose.Folder.user: (models.E006) The field 'user' clashes with the field > 'user' from model 'accounts.entity'. > > This is my new models.py file of my new app, speedy.composer.compose (from > PyCharm): > > from django.conf import settings > from django.db import models > from django.utils.translation import ugettext_lazy as _ > > from speedy.net.accounts.models import NamedEntity > > > class SpeedyComposerNamedEntity(NamedEntity): > MIN_USERNAME_LENGTH = 1 > MAX_USERNAME_LENGTH = 200 > MIN_SLUG_LENGTH = 1 > MAX_SLUG_LENGTH = 200 > MIN_NAME_LENGTH = 1 > MAX_NAME_LENGTH = 200 > > def __str__(self): > return '{}'.format(self.name) > > > class ChordsTemplate(SpeedyComposerNamedEntity): > > class Meta: > verbose_name = _('chords template') > verbose_name_plural = _('chords templates') > > > class Accompaniment(SpeedyComposerNamedEntity): > > class Meta: > verbose_name = _('accompaniment') > verbose_name_plural = _('accompaniments') > > > class Folder(SpeedyComposerNamedEntity): > user = models.ForeignKey(verbose_name=_('user'), > to=settings.AUTH_USER_MODEL, related_name='+') > > class Meta: > verbose_name = _('folder') > verbose_name_plural = _('folders') > > > class Composition(SpeedyComposerNamedEntity): > user = models.ForeignKey(verbose_name=_('user'), > to=settings.AUTH_USER_MODEL, related_name='+') > folder = models.ForeignKey(verbose_name=_('folder'), to=Folder, > related_name='+') > chords_template = models.ForeignKey(verbose_name=_('chords template'), > to=ChordsTemplate, related_name='+') > accompaniment = models.ForeignKey(verbose_name=_('accompaniment'), > to=Accompaniment, related_name='+') > tempo = models.SmallIntegerField(verbose_name=_('tempo'), default=105) > public = models.BooleanField(verbose_name=_('public'), default=False) > > class Meta: > verbose_name = _('composition') > verbose_name_plural = _('compositions') > > You can see the speedy.net code on GitHub: > https://github.com/urievenchen/speedy-net > > What did I do wrong? Did I write the models wrongly? > > Thanks, > > Uri. > > *Uri Even-Chen* > > [image: photo] Phone: +972-54-3995700 > Email: [email protected] > Website: http://www.speedysoftware.com/uri/en/ > <http://www.facebook.com/urievenchen> > <http://plus.google.com/+urievenchen> > <http://www.linkedin.com/in/urievenchen> <http://github.com/urievenchen> > <http://twitter.com/urievenchen> > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/django-users. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/django-users/CAMQ2MsGdLb%2BHXtGF4ss_vDb_fsW%3DHv4e5e% > 3DUskbBJfzt3CFunw%40mail.gmail.com > <https://groups.google.com/d/msgid/django-users/CAMQ2MsGdLb%2BHXtGF4ss_vDb_fsW%3DHv4e5e%3DUskbBJfzt3CFunw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/django-users. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/django-users/6DD8F859-10C2-4670-9446-49F59E7D1165%40gmail.com > <https://groups.google.com/d/msgid/django-users/6DD8F859-10C2-4670-9446-49F59E7D1165%40gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAMQ2MsH%2BoC_t8utGZEag-3L%2Bp%2Bw_Ez7deD-bDUSG8C%3DXjtaB-g%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.

