0

在我当前的项目中,我想在django的管理界面之外对用户进行CRUD 。

让我们解释我的问题如下:

1-我正在使用UserProfile为用户存储其他属性(他们的学校、生日等)

2-问题是通过删除用户,我可以删除配置文件而不是实际的User.

请查看列出和删除用户的代码:

def user_list(request):
    ''' Shows all of Students '''

    return object_list(request,
            queryset = UserProfile.objects.all() ,
            template_name = 'user_list.html' ,
            template_object_name = 'student'
            )


def user_delete(request , id):
    ''' Deletes a student based on his/her ID '''

    return delete_object(request,
            model = UserProfile ,
            object_id  = id ,
            template_name = 'delete_student.html' ,
            post_delete_redirect = reverse("user_list")
            )

我删除UserProfile而不是删除看起来很正常User。但我打算将它作为实际的代理User。我在这里想念什么吗?

3- 一般来说,我应该将每个模型引用到UserUserProfile吗?例如假设我有一个课程模型。以下哪一个是正确的方法?

class Course(models.Model):
    #stuff

    student = models.ForeignKey(Urer) 
    # OR ??
    student = models.ForeignKey(UserProfile)
4

1 回答 1

1

我删除的是 UserProfile 而不是 User 看起来很正常。但我打算将它作为实际用户的代理

为什么不直接删除用户?默认情况下,Django 也会使用 CASCADE DELETE 来删除 UserProfile。

一般来说,我应该将每个模型引用到 User 还是 UserProfile

我认为这更多是个人喜好的问题,但我通常直接与 User 绑定,因为它在获取所需对象时节省了一步(您不需要执行 user.get_profile().student 并且可以调用 user.get_profile().student)。学生代替)。无论如何,这对我来说也更有意义:学生是用户的财产,而不是用户的个人资料。

于 2012-08-02T16:42:24.320 回答