在学习 Django 的背景下,我需要使用 Faker 模块用随机数据填充 Sqlite。
在models.py下创建了几个模型:
from django.db import models
class Topic(models.Model):
top_name = models.CharField(max_length=264,unique=True)
def __str__(self):
return self.top_name
class Webpage(models.Model):
topic = models.ForeignKey(Topic,on_delete=models.DO_NOTHING)
name = models.CharField(max_length=264,unique=True)
url = models.URLField(unique=True)
def __str__(self):
return self.name
class AccessRecord(models.Model):
name = models.ForeignKey(Webpage,on_delete=models.DO_NOTHING)
date = models.DateField()
def __str__(self):
return str(self.date)
为了随机填充这些模型,我使用了以下脚本 (populate_first_app.py):
import os
os.environment.setdefault('DJANGO_SETTINGS_MODULE','first_project.settings')
import django
django.setup()
##FAKE POP SCRIPT
import random
from first_app.models import AccessRecord,Webpage,Topic
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):
for entry in range(N):
top = add_topic()
fake_url = fakegen.url()
fake_date = fakegen.date()
fake_name = fakegen.company()
webpg = Webpage.objects.get_or_create(topic=top,url=fake_url,name=fake_name)[0]
acc_rec = AccessRecord.objects.get_or_create(name=webpg,date=fake_date)[0]
if __name__ == '__main__':
print('populating script!')
populate(20)
print('populating complete')
当我运行 populate_first_app.py 时,出现以下错误:
AttributeError: module 'os' has no attribute 'environment'
使用 Visual Studio Code (v1.39.2),我卡住了。
可视代码突出显示以下行中的错误:
t = Topic.objects.get_or_create(top_name=random.choice(topics))[0]
Class 'Topic' has no 'objects' memberpylint(no-member)
我使用以下命令安装了 pylint:
pip3 install pylint-django
但还是卡住了。
最佳答案
调用应该是
os.environ.setdefault('DJANGO_SETTINGS_MODULE','first_project.settings')
有关更多详细信息,您可以查看以前的问题,例如: Is it safe to use os.environ.setdefault?
关于python - Django - 属性错误 : module 'os' has no attribute 'environment' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58465385/