我试过这样的
customer=Customer.objects.filter(id=request.user.id).latest('first_name', 'last_name')
customer.first_name
然而,这会从通过表单提交的first_name字段中获取登录用户的旧数据(在之前的提交中(。(假设登录用户进行了3次提交,它会为我获取第一次提交的数据,而不是最近的一次。(
我阅读了latest((方法并实现了这个
customer=Customer.objects.latest('id')
但正如我们所知,这只会呈现上次提交的详细信息,而不一定是登录用户的详细信息
这是我的型号.py供参考
class Customer(models.Model):
id=models.AutoField(primary_key=True, default=None)
customerReg=models.OneToOneField(User, on_delete=models.SET_NULL, null=True, blank=True)
first_name=models.CharField(max_length=200, blank=False, default=None)
last_name=models.CharField(max_length=200, blank=False, default=None)
那么,我该如何查询这些信息呢?
由于User
和Customer
之间的关系是OneToOne
,您可以简单地使用:
try:
customer = user.customer
except:
customer = None
如果是ForeignKey
关系,则可以使用:
customer = request.user.customer_set.last()
使用descend
排序按用户获取latest
模型对象:
customer = Customer.objects.filter(id=request.user.id).order_by('-id')