開發系統時,往往都會需要一些填充資料去做測試,此筆記將利用Faker來產生填充資料
pip install Faker
新增py檔於專案跟目錄底下
import os
# Configure settings for project
# Need to run this before calling models from application!
os.environ.setdefault('DJANGO_SETTINGS_MODULE','first_project.settings')
import django
# Import settings
django.setup()
import random
from first_app.models import Topic,Webpage,AccessRecord
from faker import Faker
fakegen = Faker()
topics = ['Search','Social','Marketplace','News','Games']
def add_topic():
t = Topic.objects.get_or_create(top_name=random.choice(topics))[0]
t.save()
return t
def populate(N=5):
'''
Create N Entries of Dates Accessed
'''
for entry in range(N):
# Get Topic for Entry
top = add_topic()
# Create Fake Data for entry
fake_url = fakegen.url()
fake_date = fakegen.date()
fake_name = fakegen.company()
# Create new Webpage Entry
webpg = Webpage.objects.get_or_create(topic=top,url=fake_url,name=fake_name)[0]
# Create Fake Access Record for that page
# Could add more of these if you wanted...
accRec = AccessRecord.objects.get_or_create(name=webpg,date=fake_date)[0]
if __name__ == '__main__':
print("Populating the databases...Please Wait")
populate(20)
print('Populating Complete')
備註:
get_or_create()用於讀取以及寫入,查詢不存在時即寫入
Hello,
回覆刪除Can you just answer a question about this?
when I populate the model I get this error:
"django.core.exceptions.FieldError: Invalid field name(s) for model AccessRecord: 'date', 'name'."
Although I have exactly the same as what you have written.
Thanks in advance.