【发布时间】:2016-10-15 05:10:45
【问题描述】:
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”标题。我已经尝试查看文档,但似乎没有任何内容可以说明如何编辑它。
这让我想到了我的问题的另一部分,使用 forms.someField 与使用 models.someField 有什么区别,因为表单似乎有更多的自定义。我正在使用 MySQL 数据库,所以我想使用模型表单,但它令人沮丧的是不可定制的,我很想知道我是否遗漏了一些东西。
最后,我如何获取对象实例的 pk id。我们希望所有的 cmets 都由一个唯一的键记录,所以我想为什么不把它与它在 db 中的 pk 对应起来。除了无论我执行什么谷歌搜索,我都找不到返回 pk 的方法。我找到的最接近的是 instance.object_instance.pk 行不通的东西。
对此的任何指导都会很棒。在模型表单方面似乎缺少 Django 文档。
【问题讨论】:
标签: python mysql django forms models