0
對於Django 1.6,這是我最終的代碼。邏輯是,如果用戶不存在數據庫對象,則轉到'account_add'添加帳戶。我不想使用user_profile或直接針對特定問題修改用戶對象,因此請不要提出這些問題。我想知道的是,如果這段代碼編寫得很好,或者寫得更好,更高效?UpdateView和CreateView - 代碼是否有效或可以改進?
class AccountCreateOrModify():
model = Employee
form_class = AccountForm
template_name = 'bot_data/account_modify.html'
success_url = reverse_lazy('home')
class ViewEmployee(LoginRequiredMixin,
DetailView):
model = Employee
template_name = 'bot_data/employee_detail.html'
def dispatch(self, request,
*args, **kwargs):
try:
pk = self.request.user.pk
queryset = self.model.objects.get(user_assigned=pk)
return super(ViewEmployee,
self).dispatch(request,
*args, **kwargs)
except Employee.DoesNotExist:
return redirect('account_add')
def get_object(self):
user = self.request.user.id
find_user = self.model.objects.get(id=user)
return find_user
class AccountModify(LoginRequiredMixin,
AccountCreateOrModify,
UpdateView):
def dispatch(self, request,
*args, **kwargs):
try:
pk = self.request.user.pk
queryset = self.model.objects.get(user_assigned=pk)
return super(AccountModify,
self).dispatch(request,
*args, **kwargs)
except Employee.DoesNotExist:
return redirect('account_add')
def get_object(self, queryset=None):
pk = self.request.user.pk
queryset = self.model.objects.get(user_assigned=pk)
return queryset
class AccountCreateRecord(LoginRequiredMixin,
AccountCreateOrModify,
CreateView):
print "filler"
有關性能,代碼完整性,最佳實踐等問題應在http://codereview.stackexchange.com/上發佈。 – Drewness
那邊呢,'Employee'是否延伸'User'?有沒有FK關係?我只是想知道這是否可以用Django的'get_or_create'方法簡化。 – Drewness
這可能更適合代碼審查。如果用戶沒有登錄,會發生什麼情況?即沒有'request.user.pk'或'self.request.user.id'?如果需要登錄,django提供裝飾器以要求登錄 – dm03514