Skip to main content
 首页 » 编程设计

python之Django之属性错误 : module 'os' has no attribute 'environment'

2024年08月12日49yjmyzz

在学习 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?