2012-08-02 3 views
0

В моем текущем проекте, я хотел бы CRUD пользователей ВНЕ интерфейса администратора Джанго.пользователей 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 В целом, следует ли указывать каждую модель на User или UserProfile? Например, предположим, что у меня есть модель для курса. Какой из них правильный?

class Course(models.Model): 
    #stuff 

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

ответ

1

Это выглядит нормально, что я удаление UserProfile, а не пользователя. Но я намеревался использовать доверенность фактическому пользователю

Почему бы не удалить пользователя напрямую? По умолчанию Django будет CASCADE DELETE, чтобы избавиться от UserProfile.

Вообще говоря, я должен ссылаться на каждый модели для пользователя или UserProfile

Я думаю, что это скорее вопрос личных предпочтений, но я обычно прикрутить пользователем напрямую, как это экономит шаг при получении в объект, который вы хотите (вам не нужно делать user.get_profile(). student и может вызывать user.student вместо этого). Это также имеет для меня больше смысла: ученик является собственностью пользователя, а не профиля пользователя.

+0

+1 для подключения моделей непосредственно к пользователю. – Soask

Смежные вопросы