Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

My if statement is not working, I am using django and python and I know the if statement is true

I am working with django and python trying to create an application, for some reason the following if statement: {% if zone.place_of_table == x.table_place_preference %} is not working, but I know it should work because the if statement is true as you can see in the output image I attached.

Here are my models

Reservation model:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

# Create your models here.
class reservations(models.Model):
    shifts = (
        ('Breakfast', 'Breakfast'),
        ('Lunch', 'Lunch'),
        ('Dinner', 'Dinner'),
    )
    restaurant = models.ForeignKey(restaurants,related_name='restaurant_of_reservation',on_delete=models.CASCADE)
    full_name = models.CharField(max_length=254)
    email = models.EmailField(max_length=254)
    phone_number = PhoneNumberField()
    date = models.DateField()
    shift = models.CharField(max_length=254,choices=shifts,default=shifts[0][0])
    time = models.CharField(max_length=254)
    estimatedtime = models.CharField(max_length=254,default='')
    tablesused = models.CharField(max_length=254,default='')
    table_place_preference = 
models.ForeignKey(placeOfTable,related_name='placeoftable',on_delete=models.CASCADE)
    number_of_people = models.PositiveIntegerField()
    baby_chair = models.PositiveIntegerField()
    message = models.CharField(max_length=254)

    def __str__(self):
        return self.full_name

zone model:

class placeOfTable(models.Model):
    restaurant = models.ForeignKey(restaurants,related_name='restaurantplaceoftable',on_delete=models.CASCADE)
    place_of_table = models.CharField(max_length=254,unique=True)

    def __str__(self):
        return self.place_of_table

views:

def restaurantmenu(request, restaurant_pk):
    zones = placeOfTable.objects.filter(restaurant__pk__contains=restaurant_pk)
    today = date.today()
    date_true = 'False'
    choosenday = today.strftime("%Y-%m-%d")
    owner_restaurants = restaurants.objects.filter(owner__username__contains=request.user)
    restaurant = restaurants.objects.filter(owner__username__contains=request.user,pk__contains=restaurant_pk)
    reservation_breakfast = reservations.objects.filter(restaurant__pk__contains=restaurant_pk,
                                                        date__contains=choosenday,
                                                        shift__contains='Breakfast')
    reservation_lunch = reservations.objects.filter(restaurant__pk__contains=restaurant_pk,
                                                    date__contains=choosenday,
                                                    shift__contains='Lunch')
    reservation_dinner = reservations.objects.filter(restaurant__pk__contains=restaurant_pk,
                                                     date__contains=choosenday,
                                                     shift__contains='Dinner')
    choosenday = datetime.datetime.strptime(choosenday,"%Y-%m-%d")
    choosenday = choosenday.strftime("%m/%d/%Y")
    if request.method == 'POST':
        choosenday = request.POST.get('choosenday',today.strftime("%Y-%m-%d"))
        choosenday = datetime.datetime.strptime(choosenday,"%m/%d/%Y")
        reservation_breakfast = reservations.objects.filter(restaurant__pk__contains=restaurant_pk,
                                                            date__contains=choosenday.strftime("%Y-%m-%d"),
                                                            shift__contains='Breakfast')
        print(reservation_breakfast[0])
        reservation_lunch = reservations.objects.filter(restaurant__pk__contains=restaurant_pk,
                                                        date__contains=choosenday.strftime("%Y-%m-%d"),
                                                        shift__contains='Lunch')
        reservation_dinner = reservations.objects.filter(restaurant__pk__contains=restaurant_pk,
                                                         date__contains=choosenday.strftime("%Y-%m-%d"),
                                                         shift__contains='Dinner')
        choosenday = choosenday.strftime("%m/%d/%Y")

    return render(request, 'restaurants/restaurantmenu.html',{'restaurant':restaurant,
                                                              'owner_restaurants':owner_restaurants,
                                                              'reservation_breakfast':reservation_breakfast,
                                                              'reservation_lunch':reservation_lunch,
                                                              'reservation_dinner':reservation_dinner,
                                                              'choosenday':choosenday,'zones':zones})

html template:

          {% if reservation_breakfast %}
          {% for zone in zones %}
          <table class="table">
            <thead class="thead-dark">
              <tr>
                <td></td>
                <td></td>
                <td>{{zone.place_of_table}}</td>
                <td></td>
                <td></td>
              </tr>
            </thead>
            <tbody class="table-group-divider">
              {% for x in reservation_breakfast %}
              <p>{{x.table_place_preference}} == {{zone.place_of_table}} ?</p>

                {% if zone.place_of_table == x.table_place_preference %}
                  <tr>
                    <td>Mark</td>
                    <td>Otto</td>
                    <td>@mdo</td>
                  </tr>
                {% endif %}
              {% endfor %}
            </tbody>
          </table>
          {% endfor %}
          {% endif %}

The output is the following:
It should print the table line with the words Mark Otto and @mdo right? So does anyone can tell me what am I doing wrong?

>Solution :

Try this:
May be one as string and other as boolean using safe tag we can make as same

{% if zone.place_of_table|safe == x.table_place_preference|safe %}
 <tr>
 <td>Mark</td>
 <td>Otto</td>
 <td>@mdo</td>
 </tr>
{% endif %}
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading