У меня есть набор данных, который возвращает мне набор кортежей в этом формате (region, district, city, role)
, и я хочу создать иерархию, но цикл работает некорректно, он создает только region
объекты и дублирует их это объекты
запись:
('Рівненська обл.', 'Дубенський р-н', 'с.Нова Миколаївка', Place.VILLAGE)
('Тернопільська обл.', 'Чортківський р-н', 'с.Мухавка', Place.VILLAGE)
('Житомирська обл.', 'Попільнянський р-н', 'с.Миролюбівка', Place.VILLAGE)
('Тернопільська обл.', 'Бучацький р-н', 'с.Передмістя', Place.VILLAGE)
('Дніпропетровська обл.', 'Царичанський р-н', 'с.Рибалки', Place.VILLAGE)
моя модель:
class Place(models.Model):
name = models.CharField(max_length=128, verbose_name='Place name', )
slug = models.SlugField(max_length=128, blank=True, null=True)
parent = models.ForeignKey('self', on_delete=models.CASCADE, blank=True, null=True)
role = models.CharField(max_length=20, choices=ROLE_CHOICES, null=True, blank=True)
class Command(BaseCommand):
help = 'Fill DB with initial data'
def handle(self, *args, **options):
for entry in list(get_dataset())[:10]:
region, region_created = Place.objects.get_or_create(name=entry[0], role=Place.REGION)
district, district_created = Place.objects.get_or_create(name=entry[1], role=Place.DISTRICT, parent=region)
city_obj, city_created = Place.objects.get_or_create(name=entry[2], role=entry[3], parent=district)
self.stdout.write(self.style.SUCCESS('Database updated successfully!'))