[pypy-dev] Django DateField default value and migrations fail

Sergey Kurdakov sergey.forum at gmail.com
Wed Aug 17 04:20:04 EDT 2016


Hi William,

thanks,

I solved then my problem by following code

def today():
    """
    Returns an aware or naive datetime.datetime, depending on
settings.USE_TZ.
    """
    return date.today()

class TestClass(models.Model):

    start_date = models.DateField(
        verbose_name=u'start date',
        default=today,
        )

so I just wrap required function call into function.
But this is a temporary solution. Would be great if there could be a
general one.

Regards
Sergey

On Wed, Aug 17, 2016 at 11:04 AM, William ML Leslie <
william.leslie.ttg at gmail.com> wrote:

> I took a look at the Django source.
>
> There's code for serialising methods in Django that checks `if
> isinstance(value, (types.FunctionType, types.BuiltinFunctionType))`
> which succeeds on cpython because datetime.date.today is a
> BuiltinFunctionType, wheras it's a types.MethodType on pypy.  Maybe
> that check could be expanded to include MethodType.
>
> Here's the code at master:
>
> https://github.com/django/django/blob/3b383085fb89a48e756383e7cd5d3b
> d867353ba1/django/db/migrations/serializer.py#L379
>
>
> On 17 August 2016 at 17:27, Sergey Kurdakov <sergey.forum at gmail.com>
> wrote:
> > Hi William,
> >
> > here is my traceback in console
> >
> > Traceback (most recent call last):
> >   File "manage.py", line 10, in <module>
> >     execute_from_command_line(sys.argv)
> >   File
> > "/usr/local/lib/pypy2.7/dist-packages/django/core/
> management/__init__.py",
> > line 353, in execute_from_command_line
> >     utility.execute()
> >   File
> > "/usr/local/lib/pypy2.7/dist-packages/django/core/
> management/__init__.py",
> > line 345, in execute
> >     self.fetch_command(subcommand).run_from_argv(self.argv)
> >   File
> > "/usr/local/lib/pypy2.7/dist-packages/django/core/management/base.py",
> line
> > 348, in run_from_argv
> >     self.execute(*args, **cmd_options)
> >   File
> > "/usr/local/lib/pypy2.7/dist-packages/django/core/management/base.py",
> line
> > 399, in execute
> >     output = self.handle(*args, **options)
> >   File
> > "/usr/local/lib/pypy2.7/dist-packages/django/core/management/commands/
> makemigrations.py",
> > line 150, in handle
> >     self.write_migration_files(changes)
> >   File
> > "/usr/local/lib/pypy2.7/dist-packages/django/core/management/commands/
> makemigrations.py",
> > line 178, in write_migration_files
> >     migration_string = writer.as_string()
> >   File
> > "/usr/local/lib/pypy2.7/dist-packages/django/db/migrations/writer.py",
> line
> > 167, in as_string
> >     operation_string, operation_imports =
> > OperationWriter(operation).serialize()
> >   File
> > "/usr/local/lib/pypy2.7/dist-packages/django/db/migrations/writer.py",
> line
> > 124, in serialize
> >     _write(arg_name, arg_value)
> >   File
> > "/usr/local/lib/pypy2.7/dist-packages/django/db/migrations/writer.py",
> line
> > 76, in _write
> >     arg_string, arg_imports = MigrationWriter.serialize(item)
> >   File
> > "/usr/local/lib/pypy2.7/dist-packages/django/db/migrations/writer.py",
> line
> > 357, in serialize
> >     item_string, item_imports = cls.serialize(item)
> >   File
> > "/usr/local/lib/pypy2.7/dist-packages/django/db/migrations/writer.py",
> line
> > 433, in serialize
> >     return cls.serialize_deconstructed(path, args, kwargs)
> >   File
> > "/usr/local/lib/pypy2.7/dist-packages/django/db/migrations/writer.py",
> line
> > 318, in serialize_deconstructed
> >     arg_string, arg_imports = cls.serialize(arg)
> >   File
> > "/usr/local/lib/pypy2.7/dist-packages/django/db/migrations/writer.py",
> line
> > 540, in serialize
> >     "topics/migrations/#migration-serializing" % (value,
> get_docs_version())
> > ValueError: Cannot serialize: <bound method type.today of <class
> > 'datetime.date'>>
> >
> >
> >
> > Regards
> > Sergey
> >
> >
> > On Wed, Aug 17, 2016 at 10:21 AM, William ML Leslie
> > <william.leslie.ttg at gmail.com> wrote:
> >>
> >> On 17 August 2016 at 16:50, Sergey Kurdakov <sergey.forum at gmail.com>
> >> wrote:
> >> >
> >> > still causes error of the kind:
> >> >
> >> > topics/migrations/#migration-serializing" % (value,
> get_docs_version())
> >> > ValueError: Cannot serialize: <bound method type.today of <class
> >> > 'datetime.date'
> >>
> >> Do you get a full traceback?  That would be much more useful for
> >> tracking down the problem.
> >>
> >> --
> >> William Leslie
> >>
> >> Notice:
> >> Likely much of this email is, by the nature of copyright, covered
> >> under copyright law.  You absolutely MAY reproduce any part of it in
> >> accordance with the copyright law of the nation you are reading this
> >> in.  Any attempt to DENY YOU THOSE RIGHTS would be illegal without
> >> prior contractual agreement.
> >
> >
>
>
>
> --
> William Leslie
>
> Notice:
> Likely much of this email is, by the nature of copyright, covered
> under copyright law.  You absolutely MAY reproduce any part of it in
> accordance with the copyright law of the nation you are reading this
> in.  Any attempt to DENY YOU THOSE RIGHTS would be illegal without
> prior contractual agreement.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pypy-dev/attachments/20160817/a6482f59/attachment-0001.html>


More information about the pypy-dev mailing list