class Pair(models.Model):
first = models.ForeignKey(User, related_name='pair_first')
second = models.ForeignKey(User, related_name='pair_second')
class PairForm(forms.ModelForm):
class Meta:
model = Pair
fields = ('second',)
def clean(self):
first = None # how can I get first?
second = self.cleaned_data.get("second")
if (first == second):
raise ValidationError("You can't pair with yourself, silly.")
def pair_create(request):
if request.method == 'POST':
pair = Pair()
pair.first = request.user
form = PairForm(instance=pair, data=request.POST)
if form.is_valid():
form.save();
return HttpResponseRedirect(reverse('somewhere'))
else:
form = PairForm()
return render_to_response('something.html', {
'form': form,
}, context_instance=RequestContext(request))
Un usuario conectado quiere emparejarse con otro usuario. Se les muestra un formulario con un menú desplegable. Si se eligen a sí mismos, generan un error de validación.Instancia de acceso pasada a ModelForm desde el método de limpieza (auto)
Pregunta: en el método clean(self)
de PairForm, ¿cómo puedo acceder al usuario que configuré en el par que di al PairForm?
Pregunta extra: ¿debería ser if (first is second)
en lugar de if (first == second)
?
derecho, he intentado que en un principio, y ha dado un error DoesNotExist. – epalm
Vaya, 'self.instance.first' parece funcionar después de reiniciar el servidor de desarrollo. ¡Gracias! – epalm
No tengo idea de por qué obtendría un 'DoesNotExist': esa es la parte más curiosa: debe publicar toda su trazabilidad en ese error. –