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: u...@speedy.net
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 <robosl...@gmail.com> 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 <u...@speedy.net> 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: u...@speedy.net
> 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 django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> 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 django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> 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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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.

Reply via email to