Oh, this worked - thank you so much for the code help and explanation!

Much appreciated. 

B  

On Thursday, November 19, 2015 at 7:59:26 PM UTC-8, Andrew Farrell wrote:
>
> Hi Becka,
>
> So it seems like, from reading your code, that I can diagnose your issue.
> When a user clicks "sign up", in say the Thursday Shifts Available table, 
> the browser sends a POST from this form:
> <form method="post">     
> {% csrf_token %}
>             <div class="hiddentext">
> {{shift.meal}}
> {{shift.meal}}
> {{shift.camper}}
>   </div>
> <input type="submit" value="sign up">
> </form>
> This POST includes the keys 'csrf_token', 'camper, 'meal', & 'meal' but 
> not 'shift_id'. Therefore, in 
>
>     if request.method == 'POST':
>         shift_id = request.POST.get('shift_id')
>         signup_for_shift(shift_id, request.user)
>         return redirect('signup')
> request.POST.get('shift_id') returns None.
> When that gets passed to mealShifts.objects.get(pk=shift_id), it  raises 
> the error.
> You can confirm that by inserting the line 
>   import pdb;pdb.set_trace()
> before that line and run `print(request.POST.get('shift_id'))` when the 
> django toy server hits that breakpoint.
>
> -- Andrew Farrell
>
> On Thu, Nov 19, 2015 at 9:31 PM, Becka R. <[email protected] <javascript:>
> > wrote:
>
>> Hi --
>>  
>> I'm working on a personal project, and have been stuck on this problem 
>> for a bit of time.  There don't seem to be examples out there for editing 
>> tables with data. Is this right? Am I looking in the right places?  I'm 
>> still pretty new at Django, and learning largely on my own. 
>>
>> I have  a template wherein people can sign up for meal shifts at Burning 
>> Man. It doesn't use a form, because the table is populated with data, but 
>> until someone signs up for a shift, "camper" is set to None.  The page is 
>> rendering and displaying data correctly, but when I go to add myself as a 
>> logged in user, I get the following error:
>>
>> DoesNotExist at /signup/
>>
>> mealShifts matching query does not exist.
>>
>>
>> Code is below. Thanks for any help.  
>>
>>
>> Signup is the name of the template and the view function.  mealShifts 
>> (which I know needs to be capitalized) is the name of the model. 
>>
>> Here's the view:
>>
>> def signup_for_shift(shift_id, camper):
>>     shift = mealShifts.objects.get(pk=shift_id)
>>     if shift.camper is not None:
>>         raise ValueError
>>
>>     shift.camper = camper
>>     shift.save()
>>
>>
>>
>> @login_required(login_url='login.html')
>> def signup(request):
>>     model = mealShifts
>>     user = request.user
>>     poss_shifts = mealShifts.objects.all().order_by('day')
>>     day_choices = range(0, 6)
>>     meal_choices = ['Breakfast', 'Dinner']
>>     shift_choices = ['Chef', 'Sous_Chef', 'KP']
>>     username = None
>>     
>>
>>     sundayShiftsAvail = mealShifts.objects.filter(day=0, assigned=False)
>>     sundayShiftsTaken = mealShifts.objects.filter(day=0, assigned=True)
>>
>>     mondayShiftsAvail = mealShifts.objects.filter(day=1, assigned=False)
>>     mondayShiftsTaken = mealShifts.objects.filter(day=1, assigned=True)
>>
>>     tuesdayShiftsAvail = mealShifts.objects.filter(day=2, assigned=True)
>>     tuesdayShiftsTaken = mealShifts.objects.filter(day=2, assigned=True)
>>
>>     wednesdayShiftsAvail = mealShifts.objects.filter(day=3, 
>> assigned=False)
>>     wednesdayShiftsTaken = mealShifts.objects.filter(day=3, assigned=True)
>>
>>     thursdayShiftsAvail = mealShifts.objects.filter(day=4, assigned=False)
>>     thursdayShiftsTaken = mealShifts.objects.filter(day=4, assigned=True)
>>
>>     fridayShiftsAvail = mealShifts.objects.filter(day=5, assigned=False)
>>     fridayShiftsTaken = mealShifts.objects.filter(day=5, assigned=True)
>>
>>     saturdayShiftsAvail = mealShifts.objects.filter(day=6, assigned=False)
>>     saturdayShiftsTaken = mealShifts.objects.filter(day=6, assigned=True)
>>
>>     saturdayShiftsAvail = mealShifts.objects.filter(day=7, assigned=False)
>>     saturdayShiftsTaken = mealShifts.objects.filter(day=7, assigned=True)
>>     
>>     if request.method == 'POST':
>>         shift_id = request.POST.get('shift_id')
>>         signup_for_shift(shift_id, request.user)
>>         return redirect('signup')
>>
>>     context = RequestContext(request)
>>     return render_to_response('signup.html', 
>>         RequestContext(request, {
>>                 'username':username, 'poss_shifts':poss_shifts,
>>                 'sundayShiftsAvail':sundayShiftsAvail, 
>> 'sundayShiftsTaken':sundayShiftsTaken,  
>>                 'mondayShiftsTaken':mondayShiftsTaken, 
>> 'mondayShiftsAvail':mondayShiftsAvail,  
>>                 'tuesdayShiftsTaken':tuesdayShiftsTaken, 
>> 'tuesdayShiftsAvail':tuesdayShiftsAvail,  
>>                 'wednesdayShiftsTaken':wednesdayShiftsTaken, 
>> 'wednesdayShiftsAvail':wednesdayShiftsAvail, 
>>                 'thursdayShiftsTaken':thursdayShiftsTaken, 
>> 'thursdayShiftsAvail':thursdayShiftsAvail,  
>>                 'fridayShiftsTaken':fridayShiftsTaken, 
>> 'fridayShiftsAvail':fridayShiftsAvail,  
>>                 'saturdayShiftsTaken':saturdayShiftsTaken, 
>> 'saturdayShiftsAvail':saturdayShiftsAvail
>>                 },))
>>
>>
>>
>> Here is my model:
>>
>>
>> class mealShifts(models.Model):
>> Sunday = "Sunday"
>> Monday = "Monday"
>> Tuesday = "Tuesday"
>> Wednesday = "Wednesday"
>> Thursday = "Thursday"
>> Friday = "Friday"
>> Days = (
>> (0, "Sunday"),
>> (1, "Monday"),
>> (2, "Tuesday"),
>> (3, "Wednesday"),
>> (4, "Thursday"),
>> (5, "Friday"),
>> (6, "Saturday"),
>> )
>> Breakfast = "Breakfast"
>> Dinner = "Dinner"
>> Meals = (
>> (Breakfast, "Breakfast"),
>> (Dinner, "Dinner"),
>> )
>> Chef = "Chef"
>> Sous_Chef = "Sous-Chef"
>> KP ="KP"
>> Shifts = (
>> (Chef, "Chef"),
>> (Sous_Chef, "Sous_Chef"),
>> (KP, "KP"),
>> )
>> assigned = models.BooleanField(default=False)
>> day = models.IntegerField(choices=Days)
>> meal = models.CharField(max_length = 10, choices=Meals)
>> shift = models.CharField(max_length = 10, choices=Shifts, default=KP)
>> camper = models.ForeignKey(User, null=True, blank=True, default=None)
>>
>> class Meta:
>> unique_together = ("day", "meal", "shift")
>>
>> def __str__(self):
>> return '%s %s %s %s %s %s'%(self.id, self.assigned, self.day, self.meal, 
>> self.shift, self.camper)
>>
>>
>> And my template:
>>
>> <div class="tablewrap">
>> <table class="gradienttable"> 
>> <thead>
>> <tr>
>> <th><p>Day</p></th>
>> <th><p>Meal</p></th>
>> <th><p>Shift</p></th>
>> <th><p>Camper</p></th>
>> <th><p>Camper</p></th>
>> </tr>
>> </thead>
>>
>> <div class="datatables" id="shiftsTaken">
>> {% for shift in sundayShiftsTaken %}
>> <tr class="datarow hideTable">
>> <td>Sunday</td>
>> <td>{{shift.meal}}</td>
>> <td>{{shift.shift}}</td>
>> <td>{{shift.camper}}</td>
>> </tr>
>> {% endfor %}
>> {% for shifts in mondayShiftsTaken %}
>> <tr class="datarow hideTable">
>> <td>Monday</td>
>> <td>{{shifts.meal}}</td>
>> <td>{{shifts.shift}}</td>
>> <td>{{shifts.camper}}</td>
>> </tr>
>> {% endfor %}
>> {% for shifts in tuesdayShiftsTaken %}
>> <tr class="datarow hideTable">
>> <td>Tuesday</td>
>> <td>{{shifts.meal}}</td>
>> <td>{{shifts.shift}}</td>
>> <td>{{shifts.camper}}</td>
>> </tr>
>> {% endfor %}
>> {% for shifts in wednesdayShiftsTaken %}
>> <tr class="datarow hideTable">
>> <td>Wednesday</td>
>> <td>{{shifts.meal}}</td>
>> <td>{{shifts.shift}}</td>
>> <td>{{shifts.camper}}</td>
>> </tr>
>> {% endfor %}
>> {% for shifts in thursdayShiftsTaken %}
>> <tr class="datarow hideTable">
>> <td>Thursday</td>
>> <td>{{shifts.meal}}</td>
>> <td>{{shifts.shift}}</td>
>> <td>{{shifts.camper}}</td>
>> </tr>
>> {% endfor %}
>> </div>
>>
>> <div class="showTable datatables" id="shiftsAvailable">
>> {% for shift in sundayShiftsAvail %}
>> <tr class="datarow showTable">
>> <td>Sunday</td>
>> <td>{{shift.meal}}</td>
>> <td>{{shift.shift}}</td>
>> <td>{{shift.camper}}</td>
>> <td>
>> <form method="post">    
>> {% csrf_token %}
>> <div class="hiddentext">
>> {{shift.meal}}
>> {{shift.meal}}
>> {{shift.camper}}
>> </div>
>> <input type="submit" value="sign up">
>> </form>
>> </td>
>> </tr>
>> {% endfor %}
>> {% for shifts in mondayShiftsAvail %}
>> <tr class="datarow showTable">
>> <td>Monday</td>
>> <td>{{shifts.meal}}</td>
>> <td>{{shifts.shift}}</td>
>> <td>{{shifts.camper}}</td>
>> <td>
>> <form method="post">    
>> {% csrf_token %}
>> <div class="hiddentext">
>> {{shift.meal}}
>> {{shift.meal}}
>> {{shift.camper}}
>> </div>
>> <input type="submit" value="sign up">
>> </form>
>> </td>
>> </tr>
>> {% endfor %}
>> {% for shifts in tuesdayShiftsAvail %}
>> <tr class="datarow showTable">
>> <td>Tuesday</td>
>> <td>{{shifts.meal}}</td>
>> <td>{{shifts.shift}}</td>
>> <td>{{shifts.camper}}</td>
>> <td>
>> <form method="post">    
>> {% csrf_token %}
>> <div class="hiddentext">
>> {{shift.meal}}
>> {{shift.meal}}
>> {{shift.camper}}
>> </div>
>> <input type="submit" value="sign up">
>> </form>
>> </td>
>> </tr>
>> {% endfor %}
>> {% for shifts in wednesdayShiftsAvail %}
>> <tr class="datarow showTable">
>> <td>Wednesday</td>
>> <td>{{shifts.meal}}</td>
>> <td>{{shifts.shift}}</td>
>> <td>{{shifts.camper}}</td>
>> <td>
>> <form method="post">    
>> {% csrf_token %}
>> <div class="hiddentext">
>> {{shift.meal}}
>> {{shift.meal}}
>> {{shift.camper}}
>> </div>
>> <input type="submit" value="sign up">
>> </form>
>> </td>
>> </tr>
>> {% endfor %}
>> {% for shifts in thursdayShiftsAvail %}
>> <tr class="datarow showTable">
>> <td>Wednesday</td>
>> <td>{{shifts.meal}}</td>
>> <td>{{shifts.shift}}</td>
>> <td>{{shifts.camper}}</td>
>> <td>
>> <form method="post">    
>> {% csrf_token %}
>> <div class="hiddentext">
>> {{shift.meal}}
>> {{shift.meal}}
>> {{shift.camper}}
>> </div>
>> <input type="submit" value="sign up">
>> </form>
>> </td>
>> </tr>
>> {% endfor %}
>> {% for shifts in fridayShiftsAvail %}
>> <tr class="datarow showTable">
>> <td>Wednesday</td>
>> <td>{{shifts.meal}}</td>
>> <td>{{shifts.shift}}</td>
>> <td>{{shifts.camper}}</td>
>> <td>
>> <form method="post">    
>> {% csrf_token %}
>> <div class="hiddentext">
>> {{shift.meal}}
>> {{shift.meal}}
>> {{shift.camper}}
>> </div>
>> <input type="submit" value="sign up">
>> </form>
>> </td>
>> </tr>
>> {% endfor %}
>> {% for shifts in saturdayShiftsAvail %}
>> <tr class="datarow showTable">
>> <td>Wednesday</td>
>> <td>{{shifts.meal}}</td>
>> <td>{{shifts.shift}}</td>
>> <td>{{shifts.camper}}</td>
>> <td>
>> <form method="post">    
>> {% csrf_token %}
>> <div class="hiddentext">
>> {{shift.meal}}
>> {{shift.meal}}
>> {{shift.camper}}
>> </div>
>> <input type="submit" value="sign up">
>> </form>
>> </td>
>> </tr>
>> {% endfor %}
>> </div>
>>
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at http://groups.google.com/group/django-users.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-users/af844fb2-a1e9-4fe9-97a5-fd61e1b7ae7b%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/django-users/af844fb2-a1e9-4fe9-97a5-fd61e1b7ae7b%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/18b242f3-9cb0-4a25-b5c0-d653f38027ad%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to