如何检索已提交表单的登录用户的最新模型对象



我试过这样的

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)

那么,我该如何查询这些信息呢?

由于UserCustomer之间的关系是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')

最新更新