我正在使用Django構建一個小系統來控制學生咖啡館借給學生的借貸。 我無法在表單提交後識別對象,我想將對象標記爲'unaivalable'(可用指令可用,因此我想將其設置爲False),因此下次有人來請求該對象時,它不會以'貸款'的形式出現。識別和修改Django模型中的單個字段
所有我需要的是如何實現它的提示,我一直在通過Django文檔和此站點,但沒有成功。提前致謝提示!
models.py
class Mate(models.Model):
color = models.CharField(max_length=2,
choices=COLOR_CHOICES, default=u'RO')
disponible = models.BooleanField(default=True)
def __unicode__(self):
return self.color
class Prestamo(models.Model):
cliente = models.ForeignKey(Usuario, null=False, blank=False)
mate = models.ForeignKey(Mate, null=False, blank=False)
termo = models.ForeignKey(Termo, null=False, blank=False)
bombilla = models.ForeignKey(Bombilla, null=False, blank=False)
fecha = models.DateTimeField(null=False, blank=False)
devuelto = models.BooleanField(default=False)
fecha_devolucion = models.DateTimeField(null=True, blank=True)
def __unicode__(self):
return str(self.pk)
views.py
@login_required
# Add_prestamo means 'Add lending' this basically deals with prestamo model, but i want to alter 'mate' objects here too.
def add_prestamo(request):
if request.method == 'POST':
form = PrestamoForm(request.POST,
auto_id=False, error_class=DivErrorList)
if form.is_valid():
prestamo = form.save(commit=False)
if request.POST.get('usuarios'):
miuser = request.POST.get('usuarios', '')
else:
miuser = ''
prestamo.cliente = Usuario.objects.get(nombre__exact=miuser)
# I KINDA NEED SOMETHING RIGHT HERE
prestamo.fecha = timezone.now()
prestamo.devuelto = False
prestamo.save()
return HttpResponseRedirect(reverse('list-prestamos'))
else:
form = PrestamoForm()
return TemplateResponse(request,
'gester/add_prestamo.html', {'form': form, })
add_prestamo.html
<form action="" method="post">
{% csrf_token %}
<table>
<tr>
<td>
<div class="ui-widget">
<label for="usuarios">Usuario: </label></td><td>
<input id="usuarios" name="usuarios">
</div>
</td>
</tr>
{{ form.as_table }}
</table>
<input class="btn" type="submit" value="Crear" />
</form>
在模板中,我使用{{form.as_table}}顯示錶單,它顯示一個選擇,但其中很多(配合)具有相同的顏色,因此當我通過POST查看時,如何識別確切對象來改變'disponible'字段值?
Mate是否有主鍵?如果是這樣,您可以使用它來更新配對模型。有點像:'Mate.objects.filter(pk = request.POST.get('mate'))。update(disponible = False)' – 2013-03-10 21:46:17
PrestamoForm是模型還是表單? – 2013-03-10 23:29:24
這是一個PrestamoForm JackShedd 謝謝@BrandonBertelsen,我在發表這篇文章並同時閱讀一本書的時候旅行了一段時間,我想出了一個類似於凱瑟琳的解決方案,雖然我正在尋找更像你的東西(無法做到它工作,因爲我從來沒有意識到我可以混合POST字符串與pk)。 – 2013-03-11 04:24:26