2016-07-22 2 views
0

ユーザーの電子メールをドメインに分割してフロントエンドに表示しようとしています。私はDjangoのユーザモデルを使用しています。Djangoがユーザーの電子メールを分割してテンプレートに表示しようとしています

models.py

class UserDomain(models.Model): 
    user = models.ForeignKey(User) 

    def splitEmailToDomain(self): 
     return self.user.email.split('@')[1].lower() 

index.htmlを私が間違っているの世界で何

<input type="text" value="{{UserDomain.splitEmailToDomain}}"> 

+3

を言うことができますか?あなたは 'splitEmailToDomain'関数の文脈を提供する必要があります。' self.join() 'のように、コードを目にすることで多すぎる質問がありますか? views.py関数のコンテキストはどのように見えますか?テンプレートの '{{UserDomain}}'は何ですか?クラスまたはオブジェクト? –

+0

@ShangWangあなたの最後のコメントを削除すると良いです、それは失礼でした。 – Gocht

+0

このような簡単なタスクのモデルメソッドではなく、[カスタムテンプレートフィルタ](https://docs.djangoproject.com/en/1.9/howto/custom-template-tags/)を検討してください。 – wim

答えて

0

あなたがプロパティとしてそれを定義する必要があり、空の文字列にjoinを適用することができる:あなたのクラスを想定し

class UserDomain(models.Model): 
    @property 
    def splitEmailToDomain(self): 
     return ''.join(self.user.email.split('@')[1]).lower() 
+0

まだ動作しません、代わりにテンプレートタグで何か問題がありますか? – saffront

+0

'user.email'からどこに行きますか? 'User'は' UserDomain'モデルのフィールドですか?もしそうなら、私は自分の答えを編集しました。可能であれば、モデルフィールドを表示します。 – Gocht

+0

私はdjangoのユーザモデルから 'user.email'を取得しています。ユーザはドメインモデルのフィールドです:' user = models.OneToOneField(User) ' – saffront

0

実際

class UserDomain(models.Model): 
    user = models.ForeignKey(User,...) 

のようなものを探して、あなたのUserクラスはemailを持っていますフィールド。

次に、あなたの方法は、よりこのようにする必要がある:

... 
    def email_domain(self): 
     return self.user.email.split('@')[1].lower() 

次に、あなたのテンプレートであなただけのあなたはそれが動作しないと思いますなぜ

{{object.email_domain}} 
関連する問題