2017-09-13 22 views
1

这个if语句有什么用吗?它工作,只是不正确。没有错误出现,它显示与每个单词值相关的数字,但它不会显示正确的单词和前端。我的模板标签有点不太正确

<p class="accent list-text">I'm a:</p> 
{% if request.user.userprofile.user_type == 1 %} 
    <p class="profile-info list-text">Designer</p> 
{% elif request.user.userprofile.user_type == 2 %} 
    <p class="profile-info list-text">Designer</p> 
{% else %} 
    <p class="profile-info list-text">Both</p> 
{% endif %} 

Models.py:

from django.db import models 
from django.utils import timezone 
from django.contrib.auth.models import User 
from users.choices import * 
from django.db.models.signals import post_save 
from django.dispatch import receiver 

# Create your models here. 
class UserProfile(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 

    first_name = models.CharField(max_length=50,default='User') 
    join_date = models.DateTimeField(default=timezone.now) 
    profile_pic = models.ImageField(upload_to='profile_pics',null=True,blank=True) 
    location = models.CharField(max_length=150) 
    title = models.CharField(max_length=250) 
    user_type = models.IntegerField(choices=USER_TYPE_CHOICES,default=1) 
    website = models.URLField(max_length=100,blank=True) 
    about = models.TextField(max_length=500,default='about') 
    twitter = models.CharField(max_length=50,blank=True) 
    dribbble = models.CharField(max_length=50,blank=True) 
    github = models.CharField(max_length=50,blank=True) 

    @receiver(post_save, sender=User) 
    def create_user_profile(sender, instance, created, **kwargs): 
     if created: 
      UserProfile.objects.create(user=instance) 

    @receiver(post_save, sender=User) 
    def save_user_profile(sender, instance, **kwargs): 
     instance.userprofile.save() 

    def __str__(self): 
     return self.user.username 

choices.py:

USER_TYPE_CHOICES = (
    (1, ("Designer")), 
    (2, ("Developer")), 
    (3, ("Both")), 
) 
+0

添加您的models.py –

+0

@AstikAnand只需添加 – Garrett

+0

是否显示在模板任何在if条件的型号? –

回答

1

用户配置模式

只需使用CharField对于这样的选择,它会正常工作。

USER_TYPE_CHOICES = (
    ('1', 'Designer'), 
    ('2', 'Developer'), 
    ('3', 'Both'), 
) 

user_type = models.CharField(max_length=1,choices=USER_TYPE_CHOICES,default='1') 
+0

不改变任何东西,我添加了我的模型和choices.py。 'else'工作,它显示“Both”,但其他两个选择似乎混淆 – Garrett

+0

@Garrett,它为你工作? –

+0

嘿,我想知道这是否适合你? –