Difference between @cached_property and @lru_cache decorator
They serve different purposes. 
lru_cache saves the least recent uses - you should specify maxsize which distinguishes how many computations of your function you can save. Once you surpass this number, the 'oldest' result is discarded and the new one is saved.
cached_property just computes the result and saves it. It doesn't take arguments unlike lru_cache (you can think of it as a lru_cache on an object type with maxsize = 1 with no arguments).
I am new to Django. Would be really helpful if someone can tell the difference between @cached_property and @lru_cache decorator in Django. 
Also when should I use which decorator in Django. Use cases would be really helpful.
Thanks.