models.py
from django.db import models
from django import forms
class History(models.Model):
commentTypes = (
('1', 'issues'),
('2', 'risks'),
('3', 'dependencies'),
('4', 'accomplishments'),
('6', 'UGM')
)
historyID = models.IntegerField()
projectID = models.IntegerField()
userID = models.CharField(max_length=6)
logComments = models.TextField(max_length=1000)
timeStamp = models.DateTimeField(auto_now_add=True, auto_now=False)
commentType = models.CharField(max_length=1,choices=commentTypes)
forms.py
class statusTab(ModelForm):
class Meta:
model = History
fields = ['logComments']
views.py
def projectTabs(request):
form = statusTab(request.POST or None)
context = {
"form":statusTab,
}
if request.method == 'POST' and form.is_valid():
instance = form.save(commit=False)
#instance.historyID = instance.object_instance.pk
instance.projectID = 1337
instance.userID = request.user
# instance.commentType
instance.save()
return render(request, "projects/project.html", context)
所以我的问题是,我希望能够创建一个文本框为用户输入有关项目的信息。除了当我使用models.textField
它继续把logComments: *textbox*
,我不想“logComments”标题。我试过看文档,似乎没有任何提示如何编辑这个文件的任何迹象。Django - 窗体vs模型窗体,编辑model.textField,并获取对象的pk?
这导致我到我的问题的其他部分,使用forms.someField
比models.someField
时有什么区别,因为窗体似乎有更多的定制。我正在使用一个MySQL数据库,所以我想使用模型表单,但它令人沮丧地不可定制,我很好奇,看看我是否错过了一些东西。
另外,最后,如何获得对象实例的PK ID。我们希望所有的注释都被一个唯一的关键字记录下来,所以我想了解为什么不把它与db中的pk相对应。除了无论我执行什么谷歌搜索,我找不到方法来返回pk。我发现最接近的是沿着instance.object_instance.pk的行,这是行不通的。
对此的任何指导都会很好。 Django文档在模型表单时似乎缺乏。