【问题标题】:Chaining Queries in DjangoDjango中的链接查询
【发布时间】:2021-07-06 16:01:08
【问题描述】:

我正在构建一个数据处理应用程序,它允许用户上传多个 Excel 工作表,这些工作表经过处理并返回给用户。我创建了 3 个模型 - 第一个模型是整体模型,第二个模型是捕获单个 Excel 工作簿,在第三个模型中打开 Excel 工作簿并捕获每个 Excel 工作表(工作簿内的工作表)的数据。我需要就 3 件事提出建议:

  1. 考虑到用户将上传多个 Excel 表格,我的模型结构是否有效?
  2. 鉴于用户可能在一天内多次上传,我如何检索最新一批文件进行处理?
  3. 我需要在单个视图中针对用户上传的每张工作表(第 3 个模型)接受用户输入,同时向用户显示表格的预览?

请帮助您的意见。

class UserUpload(models.Model):
    number_of_workbooks = models.IntegerField(blank=True,null=True)
    file_size = models.FloatField(blank=True,null=True)
    user = models.ForeignKey(User,on_delete=models.CASCADE,null=False,blank=False)
    multiple_sheets = models.BooleanField(blank=False,default=False)
    var_1 = models.BooleanField(blank=False,default=False)

class FileUpload(models.Model):
    file_field = models.FileField(blank=False,upload_to=user_directory_path)
    userupload = models.ForeignKey(UserUpload,related_name='user_uploads',on_delete=models.CASCADE)

class FileSheetData(models.Model):
    fileupload = models.ForeignKey(FileUpload,related_name='file_sheets',on_delete=models.CASCADE)
    sheetname = models.CharField(blank=False,max_length=256)
    var_2 = models.BooleanField(blank=False,default=False)
    var_3 = models.PositiveIntegerField(blank=False,default=0)

【问题讨论】:

    标签: django


    【解决方案1】:

    在做了一些研究之后,我能够得到上述一些问题的答案 -

    1. 如果您想允许多个文件上传,您需要创建一个单独的模型并通过外键将其与父模型链接。所以我的多文件上传模型结构很好。

    2. 在我的示例中,我有 3 个模型,它们通过外键顺序链接。可以通过向后遵循关系来访问 FileSheetData 中的实例。这是文档的链接 - https://docs.djangoproject.com/en/3.2/topics/db/queries/#backwards-related-objects

    3. 我仍在为此苦苦挣扎,但到目前为止,我知道 ModelFormSet 可能是解决它的一种潜在方法,但我正在努力解决它。

    【讨论】:

      猜你喜欢
      • 2014-10-03
      • 2020-04-18
      • 2018-08-13
      • 1970-01-01
      • 2019-03-22
      • 2011-05-22
      • 2013-08-12
      • 2016-03-20
      • 2012-10-16
      相关资源
      最近更新 更多