填充models.py中的表条目

时间:2018-03-12 12:02:48

标签: python django django-models

我是数据库的新手,所以也许我的想法存在缺陷,但我想使用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

2 个答案:

答案 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();

将使用具有默认值的实例自动填充数据库。

  1. 如果您已经设置了管理页面,则可以在那里创建模型条目。