form.html中的Django ContentType

时间:2015-07-07 20:22:41

标签: python django django-contenttypes

我想在我的应用中添加最喜欢的功能,因为很多模特都可以受欢迎,我会在 Django 中使用ContentType framework

我的问题是,我不知道如何从表单中获取content_type模型?

查看:

@login_required
def add_or_remove(request):

    user = request.user

    try:
        app_model = request.POST["target_model"]
        obj_id = int(request.POST["target_object_id"])
    except (KeyError, ValueError):
        return HttpResponseBadRequest()

    fav = Favorite.objects.get_favorite(user, obj_id, model=app_model)

    if fav is None:
        Favorite.objects.create(user, obj_id, app_model)

    return HttpResponse('Done!')

表单(form.html)

<form action="" action="POST">
    <input type="hidden" value="{{ object.id}}" name="target_object_id">
    <input type="hidden" value="?" name="target_model">
</form>

所以,我知道如何获得object_iduser,但如何在表单中显示app_model
我已经阅读了文档,但我并没有真正理解它。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以显示ContentType ID。

获取表单中显示的ID:ContentType.objects.get_for_model(TargetModelClass).pk

从ID:ContentType.objects.get_for_id(int(request.POST["target_model"]))

获取模型