从单独的模型 Django 更新用户信息

Updating user information from separate model Django

我正在创建一个简单的体重管理应用程序,用户可以在其中注册、登录和更新信息,例如体重、body 测量值等。我已经有一段时间没有使用 Django 了,正在慢慢学习最佳实践从我刚才离开的地方开始。

我正在使用 django-allauth 来管理用户注册,因为这允许人们使用 Facebook 等登录。

我创建了一个名为 'Stats' 的简单应用程序,并向用户提供 ForignKey。

class Stat(models.Model):

    user = models.ForeignKey(User, default=False)

    height = models.CharField(max_length=20)
    weight = models.CharField(max_length=20)

    waist = models.CharField(max_length=20)
    hips = models.CharField(max_length=20)
    upperleg = models.CharField(max_length=20)

    upperleg = models.CharField(max_length=20)
    calf = models.CharField(max_length=20)

    bodyfat = models.CharField(max_length=20)

我希望用户能够做的是每天/每周登录并更新统计信息。然后才能查看以前的统计数据。这可能会通过基于上述方法的模型表单来完成。随着时间的推移,我会增加更多的复杂性。

有没有其他方法可以做到这一点?如果最好的方法是最好的?有没有一种方法可以在管理员的用户页面中列出该模型中的所有 objects,以便能够足够轻松地查看用户统计信息?

提前致谢。

建议您为与应用用户相关的应用特定功能创建单独的用户配置文件模型。最好创建一个 UserProfile 模型,它有一个 OneToOneField link 到 User 对象。然后,您的 Stat 模型可以将 ForeignKey 指向 UserProfile 而不是 User。这是为了提供对用户对象的抽象,并在您决定在同一项目中创建另一个需要不同用户规范的 Django 应用程序时提供灵活性。此外,借助 UserProfile,您可以添加特定于应用程序的自定义字段。

改进此建模的另一件事是为每个统计信息创建单独的实体。例如,HeightWeightStat、WaistStat。但是,这不是完全必要的,完全取决于您的喜好。

要在管理页面中显示所有与用户相关的 Stat 实例,请使用 Django Admin 内联:https://docs.djangoproject.com/en/1.10/ref/contrib/admin/#inlinemodeladmin-objects