我是数据库的新手,所以也许我的想法存在缺陷,但我想使用Django为webapp定义一个带有固定条目(=初始数据)的表。这些条目将被定义一次,保持不变,并且应该在本地存在,并在协作者提取代码时存在。我认为这将使开发期间更容易,我必须从头开始多次设置整个数据库,从models.py自动填充一些初始数据。 models.py中有没有办法用这些条目填充表格?
Function IsFileOpen(fileFullName As String)
Dim FileNumber As Integer
Dim errorNum As Integer
On Error Resume Next
FileNumber = FreeFile() ' Assign a free file number.
' Attempt to open the file and lock it.
Open fileFullName For Input Lock Read As #FileNumber
Close FileNumber ' Close the file.
errorNum = Err ' Assign the Error Number which occured
On Error GoTo 0 ' Turn error checking on.
' Now Check and see which error occurred and based
' on that you can decide whether file is already
' open
Select Case errorNum
' No error occurred so ErroNum is Zero (0)
' File is NOT already open by another user.
Case 0
IsFileOpen = False
' Error number for "Permission Denied." is 70
' File is already opened by another user.
Case 70
IsFileOpen = True
' For any other Error occurred
Case Else
Error errorNum
End Select
End Function
Public Function getConsolidatedDataFile() As Workbook
Dim p As String
p = ActiveWorkbook.Path
Dim cf As String
cf = printf("{0}\ConsolidatedData.xlsx", p)
Dim wb As Workbook
Dim fo As Boolean
fo = IsFileOpen(cf)
If fo = False Then wb = Workbooks.Open(filename:=cf)
''I need to get the code for this place of fo is true
getConsolidatedDataFile wb
End Function
答案 0 :(得分:1)
使用的术语是初始数据,如第一个评论中已经指出的那样,而不是固定数据。
一旦您的应用程序投入生产,就可以编辑或删除初始数据中的条目,以防您在业务逻辑中提供适当的操作。
非常重要的是,如果您使用以下命令提供初始数据作为固定装置(JSON,YML等):
python manage.py loaddata path/to/your/data
模型方法save
不会被调用。你也有这个领域:
created_timestamp = models.DateTimeField(auto_now_add=True)
不会自动填充。这意味着,如果您为班级Field
提供数据,则必须提供上述字段的值:
你的装置可能看起来像这样:
[
{
"model": "app_label.field",
"pk": 1,
"fields": {
"name": "foo",
"created_timestamp": "2018-03-12 12:00:00"
}
},
# further entries
]
如果它是自动字段,您可以省略主键(" pk")。然后它将由数据库系统自动填充。
如果在app目录中创建目录fixtures
,则可以通过调用其名称来加载该fixture。让我们说你有这种结构:
- project
- manage.py
- yourapp
- admin.py
- models.py
- fixtures
field.json
然后你可以这样做:
python manage.py loaddata field
答案 1 :(得分:1)
一个类只是一个蓝图,根据该图打印实际实例。
您可能有两种选择: 1.您可以通过代码中的create()或save()方法填充条目。无论如何,您应该在类中具有默认值,因此只需使用
创建实例model.objects.create();
将使用具有默认值的实例自动填充数据库。