2017-05-31 29 views
0

我是Django的初學者。我想問如何訪問forms.py中的變量以便爲用戶打印出來。我知道models.py爲用戶創建數據庫。我想打印它的變量是一個複選框多選字段。我需要在表格中打印多重選擇的值。 The image is here 這是Form.py:django窗體和模型之間的問題

class BacktestForm(forms.ModelForm): 

    period_start = forms.DateField(initial=datetime.datetime.today().date() - datetime.timedelta(days=365+16), widget=forms.widgets.DateInput(format="%Y/%m/%d"), input_formats=["%Y/%m/%d"]) 
    period_end  = forms.DateField(initial=datetime.datetime.today().date() - datetime.timedelta(days=16), widget=forms.widgets.DateInput(format="%Y/%m/%d"), input_formats=["%Y/%m/%d"]) 

    market = forms.MultipleChoiceField(required=False,widget=CheckboxSelectMultiple, choices=MARKET_CHOICES) 
    sector = forms.MultipleChoiceField(required=False,widget=CheckboxSelectMultiple, choices= MEDIA_CHOICES) 
class Meta: 
    model = Parameters 

Models.py:

類參數(models.Model):

user  = models.ForeignKey(User) 
title  = models.CharField('title', max_length=100, default='', blank=True, help_text='Use an indicative name, related to the chosen parameters') 
type = models.CharField('forecast type', choices=FORECAST_TYPES, max_length=20, default="backtest") 

#input characteristics 
price_1_min    = models.FloatField('1. Price, min', default=0.1, validators=[MinValueValidator(0.1), MaxValueValidator(20000)]) 
price_1_max    = models.FloatField('1. Price, max', default=20000, validators=[MinValueValidator(0.1), MaxValueValidator(20000)]) 

這是我爲按鈕保存view.py:

def backtest(request, pk=None): 

if pk is not None: 
    param = get_object_or_404(Parameters, pk=pk, user=request.user) 
    form = BacktestForm(request.POST or None, instance=param) 
else: 
    form = BacktestForm(request.POST or None) 

    if request.method == 'POST': 
    if form.is_valid(): 
     if 'save' in request.POST: 
      obj = form.save(commit=False) 
      obj.user = request.user 
      obj.type = "backtest" 
      obj.save() 
      messages.info(request, 'Saved!') 
      return redirect(obj.get_backtest_url()) 
+0

如果您正在使用的形式這不應該被標記爲Django的休息。請張貼完整的模型和完整的表格。 – e4c5

+0

我不明白你的問題是什麼,或者圖像與什麼有關 - 甚至不顯示錶單。 –

+0

該圖像是HTML中的一個表格,我需要打印用戶輸入的輸出..它與一切都很好,但市場欄是空的,因爲我在forms.py中定義了它是一種複選框..我不知道我怎麼可以使市場(複選框變量)和models.py – faro

回答

1

請發佈完整的表格課程。我沒有看到你的模型和表單是如何連接的。如果你想訪問模型,我想你可能需要一個模型而不是表單。

所以連接它們的方式會是這樣

forms.py

from .models import Parameter 
class ParameterForm(forms.ModelForm): 
    market = forms.MultipleChoiceField(required=False,widget=CheckboxSelectMultiple, choices=MARKET_CHOICES) 
    sector = forms.MultipleChoiceField(required=False,widget=CheckboxSelectMultiple, choices= MEDIA_CHOICES) 

     class Meta: 
      model = Parameters 
+0

我添加了model.py和forms.py。問題是,當我使用backtesting表單時,保存的所有參數都排除了複選框爲空的參數。 – faro

+0

如果request.method == 'POST': \t \t如果form.is_valid(): \t \t \t如果 '保存' 在request.POST: \t \t \t \t OBJ = form.save(提交=假) \t \t \t \t obj.user = request.user \t \t \t \t obj.type = 「後臺測試」 \t \t \t \t obj.save() \t \t \t \t messages.info(請求, '保存!') \t \t \t \t回重定向(obj.get_backtest_url()) – faro

+0

這是我保存功能 – faro