在我目前的项目中,我想要django管理界面的 CRUD 用户 OUTSIDE 。
让我们解释一下我的问题如下:
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-一般来说,我应该将每个模型引用到User
或UserProfile
吗?例如,假设我有一个课程模型。以下哪一种是正确的方法?
class Course(models.Model):
#stuff
student = models.ForeignKey(Urer)
# OR ??
student = models.ForeignKey(UserProfile)
答案 0 :(得分:1)
我正在删除UserProfile而不是User。但我打算将其作为实际用户的代理
为什么不直接删除用户?默认情况下,Django也会使用CASCADE DELETE来删除UserProfile。
一般来说,我应该将每个模型引用到User或UserProfile
我认为这更多是个人偏好的问题,但我通常会直接与用户联系,因为它可以在获取所需对象时节省一步(您不需要执行user.get_profile()。学生可以改为呼叫user.student)。无论如何,这对我来说也更有意义:学生是用户的财产,而不是用户的个人资料。