【问题标题】:Django ContentType in form.htmlform.html 中的 Django ContentType
【发布时间】:2015-09-25 12:43:28
【问题描述】:

我想在我的应用程序中添加收藏功能,由于可以收藏许多模型,我将在 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
我已经阅读了文档,但我真的不明白。

谢谢!

【问题讨论】:

标签: python django django-contenttypes


【解决方案1】:

您可以显示ContentType id。

获取 id 以显示在表单中:ContentType.objects.get_for_model(TargetModelClass).pk

从id获取模型:ContentType.objects.get_for_id(int(request.POST["target_model"]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-30
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    相关资源
    最近更新 更多