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))
एक लॉग-इन उपयोगकर्ता किसी अन्य उपयोगकर्ता के साथ जुड़ना चाहता है। उन्हें एक ड्रॉपडाउन के साथ एक रूप दिखाया गया है। अगर वे खुद को चुनते हैं, तो सत्यापन त्रुटि बढ़ाएं।स्वच्छ (स्वयं) विधि से मॉडलफॉर्म को पास किया गया एक्सेस उदाहरण
प्रश्न: PairForm की clean(self)
विधि में, मैं उस जोड़े को कैसे एक्सेस कर सकता हूं जिसे मैंने जोड़े पर सेट किया था जिसे मैंने जोड़ा है?
बोनस प्रश्न: if (first == second)
के बजाय if (first is second)
होना चाहिए?
अधिकार पहुँचा जा सकता है, मुझे लगता है कि शुरू में करने की कोशिश की है, और एक DoesNotExist त्रुटि मिली। – epalm
ओह, 'self.instance.first' dev सर्वर को पुनरारंभ करने के बाद काम करता प्रतीत होता है। धन्यवाद! – epalm
मुझे नहीं पता कि आपको 'डॉन नॉटएक्सिस्ट' क्यों मिलेगा: यह सबसे उत्सुक हिस्सा है - आपको उस त्रुटि पर अपना पूरा ट्रेसबैक पोस्ट करना चाहिए। –