2013-02-27 50 views
0

屬性我用在Django 1.5 MYUSER模型(電子郵件作爲登錄):Django 1.5。用戶在註釋框架

class MyUserManager(BaseUserManager): 
def create_user(self, email, password=None): 
    """ 
    Creates and saves a User with the given email, date of 
    birth and password. 
    """ 
    if not email: 
     raise ValueError('Users must have an email address') 

    user = self.model(
     email=MyUserManager.normalize_email(email), 
     # date_of_birth=date_of_birth, 
    ) 

    user.set_password(password) 
    user.save(using=self._db) 
    return user 

def create_superuser(self, email, password): 
    """ 
    Creates and saves a superuser with the given email, date of 
    birth and password. 
    """ 
    user = self.create_user(email, 
     password=password, 
     #date_of_birth=date_of_birth 
    ) 
    user.is_admin = True 
    user.save(using=self._db) 
    return user 


class MyUser(AbstractBaseUser): 
    email = models.EmailField(
    verbose_name='email address', 
    max_length=255, 
    unique=True, 
    db_index=True, 
) 
last_name=models.CharField(max_length=30) 
first_name=models.CharField(max_length=30) 
second_name=models.CharField(max_length=30, blank=True) 
about=models.TextField(blank=True) 
is_active = models.BooleanField(default=True) 
is_admin = models.BooleanField(default=False) 

objects = MyUserManager() 

USERNAME_FIELD = 'email' 
REQUIRED_FIELDS = ['last_name','first_name','second_name',] 

def get_full_name(self): 
    # The user is identified by their email address 
    return self.email 

def get_short_name(self): 
    # The user is identified by their email address 
    return self.email 

def __unicode__(self): 
    return self.email 

def has_perm(self, perm, obj=None): 
    "Does the user have a specific permission?" 
    # Simplest possible answer: Yes, always 
    return True 

def has_module_perms(self, app_label): 
    "Does the user have permissions to view the app `app_label`?" 
    # Simplest possible answer: Yes, always 
    return True 

@property 
def is_staff(self): 
    "Is the user a member of staff?" 
    # Simplest possible answer: All admins are staff 
    return self.is_admin 

settings.py:

AUTH_USER_MODEL = 'app.MyUser' 

我激活Django的意見框架:

settings.py:

'django.contrib.comments', 

網址:

(r'^comments/', include('django.contrib.comments.urls')), 

模板(只有授權的用戶可以添加註釋):

<h2>Add a comment:</h2> {% get_comment_form for post as form %} 
<form action="{% comment_form_target %}" method="post" > {% csrf_token %} 
{% if next %} 
<div><input type="hidden" name="next" value="{{ next }}" /></div> 
{% endif %}  
{{form.content_type}}{{form.object_pk}}{{form.timestamp}}{{form.security_hash}} 
Comment:<br /> 
{{form.comment}}  
<input type="hidden" name="next" value="{{ request.get_full_path }}" /> 

<input type="submit" name="submit" class="submit-post" value="Post" /> 
<input type="submit" name="preview" class="submit-preview" value="Preview" /> 
</form> 

{% get_comment_count for post as comment_count %} 
<h2>Comments: [{{ comment_count }}]</h2> 
{% get_comment_list for post as comment_list %} 
{% for comment in comment_list|dictsortreversed:"submit_date" %} 
<dl id="comments">  
{{ comment.email }} {{ comment.submit_date|date:"d.m.Y G:i" }} 
<dd> 
{{ comment.comment|striptags|urlizetrunc:20|linebreaksbr }} 
</dd> 
</dl> 
{% endfor %} 

我怎樣才能得到用戶的示範田 'FIRST_NAME' 和其他人呢? comment.email和comment.name給我'電子郵件'字段,comment.first_name不給我任何東西。謝謝!

回答

1

根據built-in comment model的說明文件,您可以通過模板的{{ comment.user }}訪問用戶發表的評論。因此,您可以訪問MyUser模型字段,如{{ comment.user.email }}{{ comment.user.first_name }}等。