【发布时间】:2020-09-11 09:08:51
【问题描述】:
我是一名 ICT 学生,目前正在制作一个简单的 web 应用程序。我没有使用 python 和 django 的经验,所以我有点挣扎。
我在 Linux Kali VM 中有一个正在运行的空 MARIADB。
我已经从我的网络应用程序中以视觉范式制作了 ERD。我导出了 .dll 并在 MySQL 工作台中创建了数据库。我使用 inspectdb 为我的 models.py 导入 django/python 代码。
到目前为止一切顺利。
Django 提供了 User 模块,所以我没有创建自己的用户类 (auth_user)。
问题是:如何在我创建的名为“case”的类之间建立与 auth_user 类的关系?它要求一个默认的 FK 值,我不知道我的意思......我到处搜索,但只是“不明白”。
- “类案例”我想设置与用户类的关系。说明:用户可以创建一个或多个案例。
- “类项目”。一个案例可以有或多个项目(正在调查中)。
我在使用 Case 声明类项中的 FK 时收到的错误:
“您正在尝试在没有默认值的情况下向 gegevensdrager 添加不可为空的字段 'zaakid';我们不能这样做(数据库需要一些东西来填充现有的行)。
请选择一个修复:
1) 现在提供一次性默认值(将在所有现有行上设置此列的空值)
2) 退出,让我在 models.py 中添加一个默认值“
默认值!?我只想在 Class Item 中有一行引用 Case 主键 ID。我不知道默认应该是什么...
代码示例: 类案例(models.Model):
registratienummer = models.CharField(db_column='Registratienummer', unique=True, max_length=10, validators=[RegexValidator(r'^[0-9]{10}$')])
onderzoeksname = models.CharField(db_column='Onderzoeksnaam', blank=False, max_length=255)
Made_by = models.ForeignKey('AuthUser', db_column='Aangemaakt Door', null=True, on_delete=models.SET_NULL)
类项目(models.Model):
merk = models.CharField(db_column='Merk', max_length=255)
type = models.CharField(db_column='Type', max_length=255, blank=True, null=True)
serienummer = models.CharField(db_column='Serienummer', max_length=255, blank=False)
imei = models.CharField(db_column='IMEI', max_length=15, blank=True, null=True, validators=[RegexValidator(r'^[0-9]{15}$')])
#gegevensdrager_soortsocode = models.ForeignKey('GegevensdragerSoort', models.DO_NOTHING, db_column='Gegevensdrager_SoortSoCode')
#zaakid = models.ForeignKey('Zaak', db_column='Zaak_referentie', on_delete=models.DO_NOTHING)
之后我尝试了 inspectdb > models.py。这可行,但我想添加约束等,但由于某种原因它不起作用。它给了我各种我无法解释的追溯。但首先,我的帖子足够长。希望有人能帮帮我,因为我现在压力很大。
诚挚的问候, 弗洛鲁斯。
【问题讨论】:
-
您的数据库中是否已有案例项目?这可能是因为它需要为它们分配一个默认值,因为它们已经在数据库中。
-
嗨,Brendon,是的,从 Django 本身导入用户类。其余的:没有。在我设置了一个新的数据库后,它引发了这些错误。我想测试,直接从 Django 创建数据库。此时我在 sql 工作台中创建了数据库。我没有添加用户类,因为 Django 给了我这些。但我无法将 auth_user 添加到案例和注释类中。关于如何做的任何提示?
-
哦,可能是我先创建了两列 case... 然后想添加外键??
-
这是我的想法,如果两个案例已经存在,它们没有与之关联的外键,所以它可能希望默认提供现有案例
-
是的,就是这样。有时这是一个简单的答案。
标签: python mysql django-models