プロジェクトでカスタムStaffモデルとModelFormを作成します。デフォルトでは、スタッフはスタッフの許可なく作成されます。他の世界では、User.is_staff = Falseです。権限は後でupdatstaffで設定できます。私のupdatestaffでは、私はuser.is_staff = Trueを呼び出すことによってスタッフの許可を提供しようとします。ただし、user.is_staffは常にデフォルト値(False)で、何も変更されません。問題が何であるか教えてもらえますか?user.is_staffの値を変更する際に問題が発生する
In views.py
def updatestaff(request,id=None):
instance = get_object_or_404(Staff,id=id)
if request.POST:
staff_form = StaffForm(request.POST or None,instance=instance)
if staff_form.is_valid():
old_user = User.objects.get(username= request.POST.get('name'))
if request.POST.get('authorized'):
old_user.is_staff = True
else:
old_user.is_staff = False
old_user.save()
staff_form.save()
return HttpResponseRedirect('/dataInfo/staff_view/')
else:
staff_form = StaffForm(instance=instance)
return render_to_response('dataInfo/update_staff.html', {'form': staff_form,'id':instance.id}, context_instance=RequestContext(request))
In models.py
class Staff(models.Model):
yes_or_no = ((True, 'Yes'),(False, 'No'))
male_or_female = ((True,'Male'),(False,'Female'))
name = models.CharField(max_length=100,blank = False, null = False)
email = models.EmailField(max_length=100,blank = False, null = False)
password = models.CharField(max_length=100,blank = False, null = False)
gender = models.BooleanField(default = True, choices = male_or_female)
birthday = models.DateField(default =None,blank = False, null = False)
created = models.DateTimeField(default=datetime.now, blank=True)
authorized = models.BooleanField(default=False,choices = yes_or_no)
store_id = models.ForeignKey(Store,default=1)
In forms.py
class StaffForm(forms.ModelForm):
store_id = forms.ModelChoiceField(queryset = Store.objects.all(),empty_label="--------") # select values ?
class Meta:
model = Staff
fields = ('name','email','password','gender','birthday','authorized','store_id')
widgets = {'authorized':forms.RadioSelect,
'gender':forms.RadioSelect,
'birthday':SelectDateWidget(years=range(date.today().year-50,date.today().year))
}
あなたが 'を行うとold_user.save()'と 'staff_form.saveは()'、あなたの 'staff_form'は多分以前old_user'上書き保存するん'更新された' is_staff'値を使用していますか?あなたの質問では、質問に完全に無関係な 'SaleForm'を投稿しましたが、あなたは' StaffForm'を投稿しませんでした。 – C14L
申し訳ありませんが、間違ったコードを投稿してください – pipi