2015-10-15 115 views
0

我無法找到我的問題的答案,所以我問你們在這裏。 我試圖用ModelChoiceField使所有的作品(沒有錯誤給出),但仍然沒有得到任何領域/選項(空白選擇),並且不能選擇一些東西。 這裏是我的代碼表單字段| Django | ModelChoiceField

models.py

class Search(models.Model): 
    name = models.CharField(max_length=30) 
    email = models.EmailField(max_length=30) 

    def __str__(self): 
     return self.name 

forms.py

class MyModelChoiceField(ModelChoiceField): 
    def label_from_instance(self, obj): 
    return "My Object #%i" % obj.id 

class SearchForm(forms.Form): 
    search_text = forms.CharField(max_length=50) 
    wybor = MyModelChoiceField(queryset= Search.objects.all()) 

任何想法?

回答

0

試試這個:

def label_from_instance(obj): 
    return "My Object #%i" % obj.id 

self.fields['wybor'].label_from_instance = label_from_instance 
+0

我得到這個:NameError:name'self'沒有被定義 – Damian

0

確保你在你的搜索表中的數據。爲了測試嘗試這樣的觀點:

from django.shortcuts import render 
from django.forms import ModelChoiceField 
from django import forms 
from models import Search 


class MyModelChoiceField(ModelChoiceField): 
    def label_from_instance(self, obj): 
     return "My Object #%i" % obj.id 

class SearchForm(forms.Form): 
    search_text = forms.CharField(max_length=50) 
    wybor = MyModelChoiceField(queryset=Search.objects.all()) 


def test_view(request): 

    f = SearchForm() 

    ids = Search.objects.values_list('id', flat=True) 

    return render(request, 'yourapp/test.html', 
         { 
          'form': f, 
          'ids': ids 
         }) 

test.html的模板:

{{ form }} 

<br/> 

search ids: 

{{ ids }} 
在HTML輸出,你應該可以看到檢索ID

search ids: [1, 2, ...] 
+0

嘿,只有我得到的是:search ids:[] – Damian

+0

所以這意味着你的表是空的...嘗試添加一些數據:) – Sergey

+0

像我回答18小時前,我發現其他解決方案在文檔:) – Damian

0

好吧,我想我已經得到了這個。 我發現這個在文檔:

from django.db import models 

class Person(models.Model): 
SHIRT_SIZES = (
    ('S', 'Small'), 
    ('M', 'Medium'), 
    ('L', 'Large'), 
) 
name = models.CharField(max_length=60) 
shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES) 

,它的工作(顯示)和形式是有效的:)我希望這將在接下來的步驟中工作。