0

私は Django を使用して、Students Café が学生に貸与するものの貸し借りを制御する小さなシステムを構築しています。 フォームの送信後にオブジェクトを特定するのに問題があります。オブジェクトを「無効」としてマークしたい (無効な手段が利用可能であるため、False に設定したい) ので、次回誰かがそのオブジェクトを要求するようになったときに、それは「貸出」フォームには表示されません。

私が必要とするのは、それを達成する方法に関するヒントだけです.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)

ビュー.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」フィールド値を変更するには?

4

1 に答える 1

1

私はあなたのコードを本当に理解していませんが、あなたが責任を負わないことに言及しているので、これがあなたの意味することを願っています.

prestamo.fecha = timezone.now()
prestamo.devuelto = False

//Because Prestamo model has a foreignkey for Mate model. 
//The Mate model contains the disponible field which you want to access 
//     (to set it to False or unavailable)?
//This is how to access and update it.
prestamo.mate.disponible = False
prestamo.mate.save()

prestamo.save()
于 2013-03-11T03:13:53.577 に答える