这个try/except块有什么问题? 我尝试根据帐户类型返回不同的页面(我有一个自定义用户模型)
def home(request):
if request.user.is_authenticated:
try:
if CustomUser.objects.get(pk=request.user.id).vendoruser:
return redirect('test')
except CustomUser.objects.get(pk=request.user.id).vendoruser.DoesNotExist:
return redirect('test2')
return render(request, 'main/home.html')
返回
RelatedObjectDoesNotExist at /
CustomUser has no vendoruser.
型号:
class CustomUser(AbstractUser):
def __str__(self):
return self.email
class ClientUser(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
client_name = models.CharField(max_length=50)
def __str__(self):
return self.client_name
class VendorUser(models.Model):
contact_person = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
company_name = models.CharField(max_length=50, null=False, blank=False)
company_address_line_1 = models.CharField(max_length=50, null=False, blank=False)
company_address_line_2 = models.CharField(max_length=50, null=False, blank=False)
postcode = models.CharField(max_length=8, null=False, blank=False)
def __str__(self):
return self.company_name
当
vendoruser
不存在时,您不能使用它的任何属性(vendoruser.DoesNotExist
)。而是这样做或者使用此字段与(
YourRelatedModel.DoesNotExist
)相关的模型中的DoesNotExist
请注意,您不需要执行
CustomUser.objects.get(pk=request.user.id)
,只需使用request.user
您可以使用
hasattr
测试是否设置了request.user.vendoruser`因此,您的视图可以简化为:
相关问题 更多 >
编程相关推荐