Files
Backend/addresses/management/commands/address_faker.py
T
arvinbehbahani562@gmail.com 2d5311702d finished the addresses app
2026-05-13 16:46:50 +03:30

77 lines
2.5 KiB
Python

from django.core.management.base import BaseCommand
from faker import Faker
from django.contrib.auth import get_user_model
from random import choice, randint
from django.db.models import Q
from ...models import Address, Province, City
user = get_user_model()
class Command(BaseCommand):
help = "fake address creator"
def __init__(self, stdout=None, stderr=None, no_color=False, force_color=False):
super().__init__(stdout, stderr, no_color, force_color)
self.faker = Faker()
def handle(self, *args, **options):
print("creating fake users...")
user1 = user.objects.create_user(
phone_number=self.faker.phone_number(),
email=self.faker.email(),
username=self.faker.user_name(),
password="string123",
)
user2 = user.objects.create_user(
phone_number=self.faker.phone_number(),
email=self.faker.email(),
username=self.faker.user_name(),
password="string123",
)
print("operation successful...")
# print(City.objects.values_list("city_local_id", flat=True)[:10])
print("creating fake addresses")
for _ in range(10):
province = Province.objects.get(pk=randint(0, 30))
city_list = list(City.objects.filter(province=province).values_list(
"city_local_id",
flat=True,))
city = City.objects.get(Q(province=province) & Q(city_local_id=choice(city_list)))
address = Address.objects.create(
user=user1,
province=province,
city=city,
postal_code=self.faker.postalcode(),
address_detail=self.faker.address(),
)
for _ in range(5):
province = Province.objects.get(pk=randint(0, 30))
city_list = City.objects.filter(province=province).values_list(
"city_local_id",
flat=True,
)
city = City.objects.get(Q(province=province) & Q(city_local_id=choice(city_list)))
address = Address.objects.create(
user=user2,
province=province,
city=city,
postal_code=self.faker.postalcode(),
address_detail=self.faker.address(),
)
print("operation successful...")
self.stdout.write(
self.style.SUCCESS("fake addresses and accounts created successfully...")
)