从单独的模型Django

时间:2016-12-11 17:30:24

标签: python django django-1.10

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

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

还有另一种方法可以做到这一点吗?如果最好的方法是最好的?有没有办法可以在管理员的用户页面中列出该模型中的所有对象,以便能够轻松地审核用户统计数据?

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

您可以采取的另一项措施是改进此建模,为每个统计数据创建单独的实体。例如,HeightWeightStat,WaistStat。但是,这不是完全必要的,完全取决于您的偏好。

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