我正在使用Django创建一个新应用程序,我的应用程序需要一种在db上添加数据的表格。我使用的是 4种型号,它们均通过外键连接。如果不可能,我该如何使用 modelForm 将数据输入表单并将其直接添加到db中?
我检查了仅适用于2个模型的现有解决方案,但找不到适合于自己的问题的方法。我尝试使用 inlineformset ,但是正如我所说,我无法弄清楚如何将所有模型一起实现它。
我也浏览了Django文档两次,但找不到任何此类信息(也许我很想念)。
我的模型是这样的:
class Question(models.Model):
year = models.CharField(max_length=5)
source = models.CharField(max_length=140)
problemNumber = models.CharField(max_length=16)
weblink = models.CharField(max_length=200)
date_posted = models.DateTimeField(default=timezone.now)
problemStatement = models.TextField()
author = models.ForeignKey(User, on_delete=models.PROTECT)
class QLevel(models.Model):
qID = models.ForeignKey(Question, on_delete=models.CASCADE)
level = models.CharField(max_length=16)
class QMethod(models.Model):
qID = models.ForeignKey(Question, on_delete=models.CASCADE)
method = models.CharField(max_length=40)
class QSubject(models.Model):
qID = models.ForeignKey(Question, on_delete=models.CASCADE)
subject = models.CharField(max_length=35)
可以看出,有3个模型是通过外键连接到 Question 模型的,而 Question 模型是连接到 User 的。
我有一个简单的表单,我基本上输入了所有需要的信息(给定的所有字段),并希望它直接将它们输入到db。如果可以的话,请指导我,如果不能,请解释为什么不可以,我还可以尝试其他什么方法?
谢谢!
答案 0 :(得分:0)
经过一段时间的研究,我发现将多个外键连接的表单呈现为extra_views的扩展名的最佳和最简便的方法。如果有人在寻找解决方案,我认为目前没有更好的解决方案。
这里django submit two different forms with one submit button给出的解决方案也可以使用,但是如果您使用带有外键的基于模型的形式(如我),我会发现这种方法非常混乱并且难以使用。