在Django中使用帐户和用户生成的数据

时间:2012-11-01 22:11:47

标签: django web-applications

我没有找到关于这个主题的任何文档或教程,也没有在IRC频道上收到任何答案,所以它让我觉得我在寻找错误的东西。无论如何,经过几个小时的搜索后求助于SO。我会试着通过例子来描述我所追求的东西:

  1. 我想创建一个用户可以创建帐户的Web应用程序(这部分很清楚
  2. 登录后,用户可以存储他最喜欢的饭菜
  3. 当用户登录时,他会看到他最喜欢的饭菜列表,他可以编辑它们
  4. 我了解用户如何创建帐户并登录。但之后的一切都有点模糊。

    用户登录后,假设他会收到一张他可以填写并保存的表格。如何设计数据库(模型)来处理这个问题?每个用户都会得到自己的桌子吗?如何从数据库中检索用户存储的数据(即最喜欢的食物)?

    这些是我在学习django /编程时想要弄清楚的事情。正如我所说,我没有在任何书籍,文档或教程中找到它。

    如果你能指出我正确的方向,我将不胜感激。我觉得我在这里错过了一些东西。

2 个答案:

答案 0 :(得分:2)

基本的东西:

  1. 为模型中的用户创建外键
  2. 从表单
  3. 中取消用户字段
  4. 使用commit = False保存表单,将用户设置为经过身份验证的用户并保存模型。
  5. 其余的你可以从教程中直接进行。

    例如:

    # At models.py
    from django.contrib.auth.models import User
    
    
    class FavoriteMeal(models.Model):
        user = models.ForeignKey(User)
        # other fields...
    
    # At forms.py
    class FavoriteMealForm(forms.ModelForm):
        class Meta:
            model = FavoriteMeal
            exclude = ('user', )
    
    # At views.py
    @login_required
    def favorite_meals_view(request):
        favorite_meals = FavoriteMeal.objects.filter(user=request.user)
        ...
        if request.method == 'POST':
            form = FavoriteMealForm(request.POST)
            if form.is_valid():
                favorite_meal = form.save(commit=False)
                favorite_meal.user = request.user
                favorite_meal.save()
        ...
    

答案 1 :(得分:0)

你正在寻找的是django真正非常基本的部分。我建议你通过教程。这将使您对模型关系如何用于存储数据有相当多的了解。

https://docs.djangoproject.com/en/1.4/intro/tutorial01/