[英]if-else statement in python django
我是 Django 的新手,我有一個無法解決的問題。 我正在嘗試根據 Participant 模型中的字段顯示我的 Question 模型中的特定問題和其他相關屬性。 這里的問題是,即使條件為真,它也會直接轉到 else 語句。我嘗試打印(participant.condition)並且它有效,所以我不確定為什么它不能與 if 語句一起使用。
@login_required
def LPSC_VIEW1(request):
participant=request.user.participant
if participant.condition == 'LPN':
First_question= Question.objects.get(id=1)
all_choices = First_question.choices.all()
context = {'First_question': First_question, 'all_choices': all_choices}
return render(request, 'study/FirstQN.html', context)
else:
First_question= Question.objects.get(id=12)
all_choices = First_question.choices.all()
context = {'First_question': First_question, 'all_choices': all_choices}
return render(request, 'study/FirstQSC.html', context)
我的模型如下:
class Question(models.Model):
question_text = models.CharField(max_length=200)
caption = models.CharField(max_length=200, default="this is a caption")
choices = models.ManyToManyField(Choice)
vis_image = models.ImageField(default= "this is an image", null=False, blank=False, upload_to="static/study/img")
def __str__(self):
return self.question_text
class Condition(models.Model):
name = models.CharField(max_length=200)
def __str__(self):
return self.name
class Participant(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
condition = models.ForeignKey(Condition, on_delete=models.CASCADE)
score = models.IntegerField(default=0)
def __str__(self):
return self.user.username
你必須改變這一點:
participant=request.user.participant
到:
participant=Participant.objects.get(user=request.user)
condition
是外鍵,而不是字符串。 您將它與'LPN'
進行比較,但您的Condition
模型的任何實例都不會等於該字符串。
嘗試if participant.condition.name == 'LPN':
將Condition
實例上的 name 字段與該字符串進行比較。
您的print
語句顯示它們顯然是相同的,因為您已經定義了如何使用__str__
方法將Condition
實例呈現為字符串-它將打印Condition
實例的名稱,但這並不意味着Condition
值實際上相等到那個字符串。
你可能不得不使用
from .models import Participant
participant = Participant.objects.get(user = request.user)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.