我在我的 Django 应用程序中定义了一个模型树(例如,'a' 是一个顶级模型,它有很多'b',它有很多'c')。我也有适当呈现这些的视图/模板。对于这些模型中的每一个,我通常需要根据当前登录的用户进行数据库查询。
例如,它类似于堆栈溢出的每个用户如何用星号标记问题。如果我的模型是问题,我会询问模型当前用户是否已为这个问题加注星标,然后在模板中适当地呈现它。
我的第一个想法是尝试在模板中传递一个参数(我现在知道这不起作用)。
# template
{{ question.is_starred(request.user) }} # Can't work.
我的第二个想法是拥有某种类型的全局变量(原则上我不喜欢)。
# model
class question (Models.model)
def _is_starred(self):
# Use a global variable to find out the current logged in user!
我的第三个想法是让视图告诉模型当前登录的用户,但问题是,我有一个模型对象树,我想我必须加载和设置树中的每个模型,即使我不'不要最终使用它们。我假设对象是延迟加载的。
# view
def view_one_question(request, question_id):
q = Question.objects.get(pk=question_id)
q.SetCurrentlyLoggedInUser (request.user.id)
# !!!! But what about the other network of objects that the question has?
return render_to_response(...)
任何建议表示赞赏。我是 Django 的新手,并试图以最好的设计开始这个项目。