testing an idea
This commit is contained in:
commit
b80f5eee04
14
fkreplace/__init__.py
Normal file
14
fkreplace/__init__.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
# thanks to https://djangosnippets.org/snippets/2283/ for inspiration on m2m
|
||||||
|
|
||||||
|
def migrate(from_obj, to_obj):
|
||||||
|
for related in from_obj._meta.get_all_related_objects():
|
||||||
|
accessor_name = related.get_accessor_name()
|
||||||
|
varname = related.field.name
|
||||||
|
getattr(from_obj, accessor_name).all().update(**{varname: to_obj})
|
||||||
|
|
||||||
|
for related_m2m in from_obj._meta.get_all_related_many_to_many_objects():
|
||||||
|
accessor_name = related.get_accessor_name()
|
||||||
|
varname = related.field.name
|
||||||
|
|
||||||
|
#for obj in getattr(from_obj, varname)
|
||||||
|
|
15
runtests.py
Executable file
15
runtests.py
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import django
|
||||||
|
from django.conf import settings
|
||||||
|
from django.test.utils import get_runner
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.settings'
|
||||||
|
django.setup()
|
||||||
|
TestRunner = get_runner(settings)
|
||||||
|
test_runner = TestRunner()
|
||||||
|
failures = test_runner.run_tests(["tests"])
|
||||||
|
sys.exit(bool(failures))
|
0
tests/__init__.py
Normal file
0
tests/__init__.py
Normal file
21
tests/models.py
Normal file
21
tests/models.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class Person(models.Model):
|
||||||
|
name = models.CharField(max_length=100)
|
||||||
|
friends = models.ManyToManyField('self')
|
||||||
|
|
||||||
|
|
||||||
|
class Number(models.Model):
|
||||||
|
person = models.ForeignKey(Person, related_name='numbers')
|
||||||
|
number = models.CharField(max_length=10)
|
||||||
|
|
||||||
|
|
||||||
|
class SSN(models.Model):
|
||||||
|
person = models.OneToOneField(Person)
|
||||||
|
number = models.CharField(max_length=10)
|
||||||
|
|
||||||
|
|
||||||
|
class Group(models.Model):
|
||||||
|
name = models.CharField(max_length=100)
|
||||||
|
people = models.ManyToManyField(Person)
|
15
tests/settings.py
Normal file
15
tests/settings.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
SECRET_KEY = 'so-secret'
|
||||||
|
|
||||||
|
INSTALLED_APPS = (
|
||||||
|
'fkreplace',
|
||||||
|
)
|
||||||
|
|
||||||
|
MIDDLEWARE_CLASSES = ()
|
||||||
|
|
||||||
|
DATABASES = {
|
||||||
|
'default': {
|
||||||
|
'ENGINE': 'django.db.backends.sqlite3',
|
||||||
|
'NAME': 'db.sqlite3',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
8
tests/tests.py
Normal file
8
tests/tests.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
from django.test import TestCase
|
||||||
|
from .models import Person, Number, SSN
|
||||||
|
|
||||||
|
def setUp():
|
||||||
|
a = Person.objects.create(name='alf')
|
||||||
|
b = Person.objects.create(name='bee')
|
||||||
|
Number.objects.create(person=a, number='123')
|
||||||
|
Number.objects.create(person=a, number='1234')
|
Loading…
Reference in New Issue
Block a user