繁体   English   中英

raise FieldError("Cannot resolve keyword '%s' into field." django.core.exceptions.FieldError: 无法解析关键字

[英]raise FieldError("Cannot resolve keyword '%s' into field. " django.core.exceptions.FieldError: Cannot resolve keyword

我无法用虚拟数据填充我的数据库。 我得到的错误的规模是:(raise FieldError(“无法将关键字'%s'解析为字段。” django.core.exceptions.FieldError:无法将关键字'主题'解析为字段。选择是:访问记录,日期,ID , 名称, topic_name, topic_name_id, url

以下是使用 Faker 生成虚拟数据的代码

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE','first_project.settings')

import django
django.setup()

# faker pop script
import random
from first_app.models import AccessRecord,Webpage,Topic
from faker import Faker

fakegen = Faker()
topics = ['Search', 'Social', 'Marketplace', 'News', 'Games', 'Music']

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):

# iget the topic for the entry
top = add_topic()

# create fake data for that entry
fake_url = fakegen.url()
fake_date = fakegen.date()
fake_name = fakegen.company()

# create the new Webpage entry
webpg = 

Webpage.objects.get_or_create(Topic=top,url=fake_url,name=fake_name)[0]

# create fake access record for Webpage
acc_rec = 
AccessRecord.objects.get_or_create(name=webpg,date=fake_date)[0]
if __name__=='__main__':
print("populating script")
populate(20)
print("populating complete!")
  

Model 代码如下

from django.db import models

# Create your models here.
class Topic(models.Model):
id = models.AutoField(primary_key=True)
top_name = models.CharField(max_length=264,unique=True)

def __str__(self):
    return self.top_name

class Webpage(models.Model):
id = models.AutoField(primary_key=True)
topic_name= models.ForeignKey(Topic, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
url = models.URLField(unique=True)
date = models.DateField()
def __str__(self):
    return self.name

class AccessRecord(models.Model):
id = models.AutoField(primary_key=True)
name = models.ForeignKey(Webpage, on_delete=models.CASCADE)
date = models.DateField()

def __str__(self):
    return str(self.date)

您为Webpage object 使用了错误的字段名称,它应该是topic_name而不是Topic ,所以:

  webpg = Webpage.objects.get_or_create(topic_name =top,url=fake_url,name=fake_name)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM