gpt4 book ai didi

django - 从clean(self)方法传递给ModelForm的访问实例

转载 作者:行者123 更新时间:2023-12-03 14:35:29 25 4
gpt4 key购买 nike

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)方法中,如何访问在我给PairForm的Pair上设置的用户?

奖励问题:应该是 if (first is second)而不是 if (first == second)吗?

最佳答案

ModelForm中,可以通过self.instance访问实例
self.instance.first == self.cleaned_data.get("second")
http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-clean-method

关于django - 从clean(self)方法传递给ModelForm的访问实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5129402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com