我正在写一个网络刮板,以获取有关客户的信息和访问他们的预约时间。我有一个名为Job的类,它存储有关特定作业的所有详细信息(它的一些属性也是自定义类(例如Client)
class Job:
def __init__(self, id_=None, client=Client(None), appointment=Appointment(address=Address(None)), folder=None,
notes=None, specific_reqs=None, system_notes=None):
self.id = id_
self.client = client
self.appointment = appointment
self.notes = notes
self.folder = folder
self.specific_reqs = specific_reqs
self.system_notes = system_notes
def set_appointment_date(self, time, time_format):
pass
def set_appointment_address(self, address, postcode):
pass
def __str__(self):
pass
作为一个独立的应用程序,我的scraper工作得非常好,它为每一页的数据生成一个Job实例。 我现在想把这些实例保存到Django数据库中
我知道我需要创建一个模型来映射作业类,但这就是我迷路的地方。 从Django文档(https://docs.djangoproject.com/en2.1/howto/custom-model-fields/)可以看出,为了在Django模型中使用我的Job类,我根本不需要更改它。太好了-正是我想要的。但我无法理解如何创建一个映射到我的工作类的模型
应该是这样的吗
from django.db import models
import Job ,Client
class JobField(models.Field):
description = "Job details"
def __init__(self, *args, **kwargs):
kwargs['id_'] = Job.id_
kwargs['client'] = Client(name=name)
...
super().__init__(*args, **kwargs)
class Job(models.Model):
job = JobField()
然后我会用
Job.objects.create(id_=10101, name="Joe bloggs")
我真正想知道的是我是不是走对了路线?或者(更有可能)这种方法有多错误? 我知道这里肯定少了一大块东西,但我不知道是什么
通过映射,我假设您希望自动生成一个Django模型,该模型可以在数据库中迁移,理论上,如果您知道您有哪些字段类型,并且从代码中您实际上没有这些信息,那么这是可能的
您需要做的是定义一个Django模型,如https://docs.djangoproject.com/en/2.1/topics/db/models/中所示
基本上,您必须在项目应用程序的models.py中创建以下类:
我不知道您实际拥有什么数据类型,您必须自己解决这个问题并将其交叉引用到https://docs.djangoproject.com/en/2.1/ref/models/fields/#model-field-types。这只是一个例子,让你了解如何定义它
在你弄清楚这些之后,你可以做
Job.objects.create(...yourdata)
您不需要添加id字段,因为Django默认为所有模型创建一个id字段
相关问题 更多 >
编程相关推荐