小编Cal*_*Mac的帖子

创建具有两个可选但一个强制外键的模型

我的问题是我有一个模型可以使用两个外键之一来说明它是哪种模型。我希望它至少需要一个,但不是两个。我可以让这仍然是一种模型还是应该将其分为两种类型。这是代码:

class Inspection(models.Model):
    InspectionID = models.AutoField(primary_key=True, unique=True)
    GroupID = models.ForeignKey('PartGroup', on_delete=models.CASCADE, null=True, unique=True)
    SiteID = models.ForeignKey('Site', on_delete=models.CASCADE, null=True, unique=True)

    @classmethod
    def create(cls, groupid, siteid):
        inspection = cls(GroupID = groupid, SiteID = siteid)
        return inspection

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

class InspectionReport(models.Model):
    ReportID = models.AutoField(primary_key=True, unique=True)
    InspectionID = models.ForeignKey('Inspection', on_delete=models.CASCADE, null=True)
    Date = models.DateField(auto_now=False, auto_now_add=False, null=True)
    Comment = models.CharField(max_length=255, blank=True)
    Signature = models.CharField(max_length=255, blank=True)
Run Code Online (Sandbox Code Playgroud)

问题是Inspection模型。这应该链接到一个组或一个站点,但不能同时链接到这两个站点。目前使用此设置,它需要两者。

我宁愿不必将其拆分为两个几乎相同的模型GroupInspectionSiteInspection,因此任何将其保留为一个模型的解决方案都是理想的。

django django-models

9
推荐指数
2
解决办法
1144
查看次数

如何在 POST 后刷新之前让我的模板“加载”一两秒钟

我有一个问题,我有一个 MariaDB 事件与我的 Django 模型相结合。对于上下文,这是我的模型代码:

class PartGroup(models.Model):
    GroupID = models.AutoField(primary_key=True, unique=True)
    Label = models.CharField(max_length=40, blank=True)
    SiteID = models.ForeignKey('Site', on_delete=models.CASCADE, null=True)
    InspectionPeriod = models.IntegerField(blank=False, null=True)
    LastInspected = models.DateField(blank=True, null=True)
    InspectionDue = models.CharField(max_length=255, blank=True)
    ConnectedTo = models.ManyToManyField('self', blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

我想在这里强调的领域是InspectionPeriodLastInspectedInspectionDue。我有另一个模型,它添加了与GroupID. 这包含检查日期:

class GroupInspection(models.Model):
    InspectionID = models.AutoField(primary_key=True, unique=True)
    GroupID = models.ForeignKey('PartGroup', on_delete=models.CASCADE, null=True, unique=True)

class GroupReport(models.Model):
    ReportID = models.AutoField(primary_key=True, unique=True)
    InspectionID = models.ForeignKey('GroupInspection', on_delete=models.CASCADE, null=True)
    Date = models.DateField(auto_now=False, auto_now_add=False, null=True)
    Comment = models.CharField(max_length=255, blank=True)
    Signature …
Run Code Online (Sandbox Code Playgroud)

mysql django post django-templates django-models

5
推荐指数
1
解决办法
136
查看次数

如何使用 Django 在 HTML post 请求中发送数组

我从清单中得到了一组值:

{% for groups in groupList %}
    <tr>
        <td id="checkboxes">
            <input type="checkbox" name="check" id="check_{{groups.GroupID}}">
        </td>
    <tr>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

请注意,这只是一个更大表格的一个片段。但这是相关数据。

我需要获取表中所有已检查的项目并将其提取groups.GroupID到一个数组中,并将其传递到某个地方(大概是一个视图),我可以在其中使用数据来编辑模型实例。

我知道如何将数据获取到数组中,但我不确定如何传递数据。可能是一个表单,但我不确定如何将其实现附加到视图并传递数组。

forms arrays django post django-forms

5
推荐指数
1
解决办法
2543
查看次数

删除数据库后表“django_migrations”已存在

我最近遇到了一个数据库问题,所以我决定用核武器攻击它,因为我没有重要的数据。我删除了应用程序目录中的迁移文件夹并删除了数据库。但是现在,当我重新创建所有内容时,manage.py migrate出现以下错误:

  File "../manage.py", line 21, in <module>
    main()
  File "../manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/base.py", line 83, in wrapped
    res = handle_func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/commands/migrate.py", line 234, in handle
    fake_initial=fake_initial,
  File "/usr/local/lib/python3.6/dist-packages/django/db/migrations/executor.py", line 91, in migrate
    self.recorder.ensure_schema()
  File "/usr/local/lib/python3.6/dist-packages/django/db/migrations/recorder.py", line 69, in ensure_schema …
Run Code Online (Sandbox Code Playgroud)

django django-database mariadb

2
推荐指数
1
解决办法
1318
查看次数

在 Windows 10 上安装 Kivy 的问题

我正在按照文档https://kivy.org/doc/stable/installation/installation-windows.html上的说明进行操作

并且已经到了舞台

Install kivy:

python -m pip install kivy==1.11.1
Run Code Online (Sandbox Code Playgroud)

在此之前的一切都运行良好。我已经使用 --verison 检查了我的 python 版本和 pip 版本。我有 Python 3.8.1 和 pip 20.0.2(python 3.8)。

首先,那一步不起作用,我得到了 ERROR: Failed building wheel for kivy

于是我环顾四周,发现可以直接下载一个轮子。所以我下载了https://kivy.org/downloads/appveyor/kivy/Kivy-2.0.0rc1.20200130.318720360-cp38-cp38-win_amd64.whl 我认为这将是正确的版本,因为我有 python 3.8 和 64 位处理器。

但是,当我尝试时python -m pip install Kivy-2.0.0rc1.20200130.318720360-cp38-cp38-win_amd64.whl,出现以下错误:

ERROR: Could not find a version that satisfies the requirement Kivy-2.0.0rc1-cp38-cp38-win_amd64 (from versions: none)
ERROR: No matching distribution found for Kivy-2.0.0rc1-cp38-cp38-win_amd64
Run Code Online (Sandbox Code Playgroud)

编辑后面的完整错误ERROR: Failed building wheel for kivy

    C:\Users\User>python -m pip install …
Run Code Online (Sandbox Code Playgroud)

python pip python-3.x kivy windows-10

2
推荐指数
2
解决办法
7384
查看次数