2015-08-28 57 views
1

我想擴展用戶模型。我遵循了this doc中提到的步驟。我做了一個新的應用程序extended_user其models.py全文:Django Oscar中新增的字段沒有顯示在Profile Edit表單中?

from django.db import models 

from oscar.apps.customer.abstract_models import AbstractUser 
from django.utils.translation import ugettext_lazy as _ 


class User(AbstractUser): 

    nickname = models.CharField(_("nick_name"), max_length=50, null=True, blank=True) 

    def get_full_name(self): 
     full_name = '%s %s' % (self.last_name.upper(), self.first_name) 
     return full_name.strip() 

settings.py中我提到

AUTH_USER_MODEL = "extended_user.User" 

我製作和運行遷移。在配置文件視圖中,我可以看到nickname字段,但在配置文件編輯視圖中我沒有。如何查看Profile Edit表單中新添加的字段,我需要做些什麼?

+0

您是使用Django模型表單還是表單被硬編碼並聲明瞭字段? –

+0

Django模型表格 – Coderaemon

回答

1

我假設你不使用單獨的rofile類。在那種情況下,奧斯卡setsProfileForm指向UserForm類。

該類反過來有一個或多或少的硬編碼列表fields。 (在現實中,它說"whichever fields exist out of this list"

從這裏往前走,最簡單的辦法就是overridecustomer.forms.ProfileForm用自己的類,使用新定義的User模型和更適合您的用例字段的列表。 (創建一個your_app.customer.forms模塊並在裏面定義一個ProfileForm。)

+0

我在硬編碼列表中添加了新字段,它工作。但是編輯奧斯卡源代碼是否是一個好習慣,或者覆蓋表單是一種更好的方法嗎? – Coderaemon

+0

在您的項目中覆蓋它可以升級奧斯卡,並且可以節省您在決定將代碼部署到產品時分發自己的奧斯卡版本的可能性(默認情況下'pip'將安裝未修改的奧斯卡版本並中斷您的網站)。 – patrys

+0

我在my_app/customer中添加了一個'forms.py'(裏面有'ProfileForm'類)。但最重要的是不工作?我必須做的一些其他更改 – Coderaemon

相關問題