2016-06-14 15 views
1

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 - モデルのフォームとモデルのフォームの編集、model.textFieldの編集、オブジェクトのpkの取得?

forms.someFieldmodels.someFieldよりも使用した場合の違いは何ですか?私の質問の他の部分につながります。フォームにはさらにカスタマイズがあるようです。私はMySQLデータベースを使用していますので、モデル・フォームを使用したいと思っていましたが、不満足なことにカスタマイズできず、何か不足しているかどうか不思議です。

最後に、オブジェクトインスタンスのpk idを取得する方法。すべてのコメントを一意のキーで記録する必要があるので、なぜdb内のpkに対応していないのか分かりません。私は何を検索しても、私はpkを返すメソッドを見つけることができません。私が見つけた最も近いものは、動作しないinstance.object_instance.pkの行に沿ったものでした。

これについてのガイダンスは素晴らしいものです。 Djangoのドキュメンテーションは、モデルフォームに関しては欠けているようです。

答えて

1

あなたの質問にはさまざまなものがありますが、私はそれらに答えようとします。

rendering form fields manuallyのドキュメントを参照してください。ラベルを表示したくない場合は、そのまま放置してください。フォームで

、あなたは常にフォームフィールド(例えばforms.CharField)とないモデルフィールド(例えばmodels.CharField)を使用する必要があります。これは、モデルフォームにも当てはまります。モデルクラスは、モデルクラスを定義するときに使用する必要があります。

instance.pkでインスタンスの主キーを取得できます。の後にがインスタンスを保存するまでこれを行うことはできません。 form.save(commit=False)に電話をかけた時点で、インスタンスはデータベースに保存されていないため、主キーはまだありません。

関連する問題