# Copyright The IETF Trust 2015-2020, All Rights Reserved import itertools from django.db import models class DumpInfo(models.Model): date = models.DateTimeField() host = models.CharField(max_length=128) tz = models.CharField(max_length=32, default='UTC') class ForeignKey(models.ForeignKey): "A local ForeignKey proxy which provides the on_delete value required under Django 2.0." def __init__(self, to, on_delete=models.CASCADE, **kwargs): return super(ForeignKey, self).__init__(to, on_delete=on_delete, **kwargs) class OneToOneField(models.OneToOneField): "A local OneToOneField proxy which provides the on_delete value required under Django 2.0." def __init__(self, to, on_delete=models.CASCADE, **kwargs): return super(OneToOneField, self).__init__(to, on_delete=on_delete, **kwargs) def object_to_dict(instance): """ Similar to django.forms.models.model_to_dict() but more comprehensive. Taken from https://stackoverflow.com/questions/21925671/#answer-29088221 with a minor tweak: .id --> .pk """ opts = instance._meta data = {} for f in itertools.chain(opts.concrete_fields, opts.private_fields): data[f.name] = f.value_from_object(instance) for f in opts.many_to_many: data[f.name] = [i.pk for i in f.value_from_object(instance)] return data