我有一个负责显示用户个人资料的Django视图。我正在使用django本身提供的用户模型,但我也希望用我自己的一些信息扩展它,所以我创建了自己的模型来扩展用户模型本身:
User = get_user_model()
# Create your views here.
class profileDetailView(DetailView):
template_name = 'profile.html'
def get_object(self):
username = self.kwargs.get("username")
if username is None:
raise Http404
return get_object_or_404(User, username__iexact=username, is_active=True)
以下是我的观点,我想用它:
try {
final Document document = Jsoup.connect("http://www.jozita.lt/").get();
Elements ele = document.select("div#fuel_price_table_silale_1");
final String title = ele.select("td.price").text();
System.out.println(title);
} catch (IOException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
}
现在我的问题是,DetailViews are meant for a single model,我怎样才能实现这一目标?
答案 0 :(得分:0)
您在扩展内置用户模型的两种方式之间感到困惑。
如果您继承自AbstractBaseUser,这意味着您要定义自己的用户模型 - 您需要定义自己的用户名/电子邮件字段等,并设置AUTH_USER_MODEL指向您的替换型号。在这种情况下,您不需要在模板中引用两个模型,因为您的模型将 用户。
但是,如果要定义相关的UserProfile,则不需要继承AbstractBaseUser,也不需要更改AUTH_USER_MODEL;但是你做需要定义与实际用户模型的关系,可能是通过一对一的字段。在这种情况下,要访问配置文件,您只需遵循模板中的关系 - 例如通过{{ user.userprofile.currentprofile }}
等。
在你的情况下,我建议采取第二种选择;从AbstractBaseUser中删除继承,并向User添加一对一字段。