2010-01-15 26 views
2

我有一個(GoogleAppEngine)的Django的ModelForm:的Django的ModelForm:將一個別名字段

class A(db.Model): 
    a = db.StringProperty() 

class MyAForm(djangoforms.ModelForm): 
    class Meta: 
    model = A 

這產生具有一個字符串字段a的形式。在我的表單上,我想調用其他的東西,比如b。所以我想要一個名爲b的表單,當表單被POST時,我們創建一個新的A實體,a屬性填充b-值。

有沒有一個簡潔的方式來做這個管道?

(附註:我不想改變底層模型)

回答

0
class A(db.Model): 
    a=db.StringProperty(verbose_name='b') 
+0

「(PS我不想改變底層模型)」 – 2010-01-15 09:53:48

+0

對不起,我錯過了 – tback 2010-01-15 11:03:35

5

你是什麼意思時,你說你要「調用」字段別的窗體上目前還不清楚。你的意思是標籤?這是很容易做到:

class MyAForm(djangoforms.ModelForm): 
    a = forms.CharField(label='b') 
    class Meta: 
    model = A 

如果你想改變底層的HTML ID,你可以做,經由小組件:

a = forms.CharField(widget=forms.TextInput(attrs={'id':'b'})) 

我不認爲這是可能改變實際的字段的HTML姓名,但我想不出有什麼理由想要這樣做。

+0

我希望能夠到(假設我設置了正確的視圖): 'curl -d「b = my_b_string」http:// domain.com/api/A' 這會創建一個新的A(a ='my_b_string 「)。 – nafe 2010-01-15 11:45:06

+0

如果在同一頁面上有兩個表單,它們都包含名稱字段。這是我遇到的場景,我想將其中一個關閉,所以request.POST傳入表單時將檢索正確的變量。 – 2010-03-05 05:13:32

+3

@Richard:這是表單前綴的用途:http://docs.djangoproject.com/en/1.1/ref/forms/api/#prefixes-for-forms – 2010-03-05 07:21:29

0

其他方式應該被重新定義的字段標籤:

class MyAForm(forms.ModelForm): 

    class Meta: 
     model = A 

    def __init__(self, *args, **kwargs): 
     super(MyAForm, self).__init__(*args, **kwargs) 
     self.fields['a'].label = 'something' 
相關問題