1

我正在创建一个简单的体重管理应用程序,用户可以在其中注册、登录和更新体重、身体测量等信息。我已经有一段时间没有使用 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)

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

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

提前致谢。

4

1 回答 1

2

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

您可以做的另一件事来改进此建模是为每个统计数据创建单独的实体。例如,身高体重统计、腰围统计。但是,这不是完全必要的,完全取决于您的偏好。

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

于 2016-12-11T23:22:52.437 回答