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?たとえば、Courseのモデルがあるとします。これらのどれが正しい方法ですか?

class Course(models.Model):
    #stuff

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

1 に答える 1

1

UserではなくUserProfileを削除しているのは正常に見えます。しかし、私はそれを実際のユーザーへのプロキシにするつもりでした

ユーザーを直接削除してみませんか?デフォルトでは、DjangoはCASCADE DELETEを実行して、UserProfileも削除します。

一般的に、各モデルをUserまたはUserProfileに参照する必要があります

これは個人的な好みの問題だと思いますが、目的のオブジェクトに到達する際の手順を節約できるため、通常はUserに直接関連付けます(user.get_profile()。studentを実行する必要はなく、userを呼び出すことができます。代わりに学生)。とにかく、それは私にとっても理にかなっています。学生はユーザーの所有物であり、ユーザーのプロファイルではありません。

于 2012-08-02T16:42:24.320 に答える