将Django模型添加到新vi

2024-06-24 12:05:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个完整的Django/Python noob,但我正试图通过一个现有的项目来破解我的方法。我有以下型号的类别.py':

from django.contrib.auth.decorators import login_required, permission_required
from django.forms import ModelForm
from django.shortcuts import render, redirect
from django.template import RequestContext
from django.http import HttpResponse
from refeed.models.category import Category
from refeed.models.story import Story
import json

class CategoryForm(ModelForm):
    class Meta:
        model = Category
        fields = ('name','category_layout')


@permission_required('refeed.change_category')
def list(request):
    categories = request.user.account.category_set.all()
    return render(request,'category_list.html',{'categories':categories})


@permission_required('refeed.add_category')
def create(request):
    if request.method == 'POST':
        form = CategoryForm(request.POST)
        if form.is_valid():
            category = Category(**form.cleaned_data)
            category.account = request.user.account

            #initialize the category with a unique order
            ordered_categories = Category.objects.filter(account=request.user.account).order_by("-order")
            if ordered_categories:
                category.order = ordered_categories[0].order + 1
            else:
                category.order = 0

            category.save()
            return redirect('/categories')
    else:
        form = CategoryForm()

    return render(request,'basic_form.html',{'form':form},context_instance=RequestContext(request))

@permission_required('refeed.add_category')
def create_ajax(request):
    cats = request.user.account.category_set.all().values('pk', 'name')
    cats = [dict(c) for c in cats]

    rdata = json.loads(request.body)
    category_name = rdata.get('category', '')
    if not category_name:
        raise Exception('No name specified')
    category = Category(name=category_name)
    category.account = request.user.account

    #initialize the category with a unique order
    ordered_categories = Category.objects.filter(account=request.user.account).order_by("-order")
    if ordered_categories:
        category.order = ordered_categories[0].order + 1
    else:
        category.order = 0

    category.save()

    cats = request.user.account.category_set.all().values('pk', 'name')
    cats = [dict(c) for c in cats]

    return HttpResponse(json.dumps({'status':'success', 'cats':cats, 'newId':category.pk}), mimetype='application/json') 

@permission_required('refeed.change_category')
def edit(request,id):
    category = Category.objects.get(pk=id)
    if request.method == 'POST':
        form = CategoryForm(request.POST,instance=category)
        if form.is_valid():
            form.save()
            return redirect('/categories')
    else:
        form = CategoryForm(instance=category)

    return render(request,'basic_form.html',{'form':form},context_instance=RequestContext(request))


@permission_required('refeed.delete_category')
def delete(request,id):
    category = Category.objects.get(pk=id)
    Story.objects.filter(category=category).update(category=None)
    category.delete()
    return redirect('/categories')



@login_required
def sort_categories(request):
    #issue = get_object_or_404(Issue,account=request.user.account,pk=id,active=True)
    for index,category_id in enumerate(request.GET.getlist('categories[]')):
        category = Category.objects.filter(pk=category_id)[0]
        if category:
            category.order = index
            category.save()

    return HttpResponse('')

这个模型在一个“类别”上循环_列表.html'这样的模板:

{% extends "master.html" %}

{% block content %}

<h1>All Categories</h1>

<table class="table table-striped" id="categories_container">
    <thead>
        <tr>
            <th>Name</th>
      <th>Layout</th>
            <th>Primary Color</th>
            <th>Actions</th>
        </tr>
    </thead>
    <tbody>
        {% for category in categories %}
        <tr id="categories_{{category.id}}" data-id="{{category.id}}">
            <td>{{category.name}}</td>
      <td>{{category.category_layout.name}}</td>
            <td><div class="primary_color" style="background: {{category.primary_color}}; width:10px; height:10px; display:inline-block;"></div> {{category.primary_color}}</td>
            <td>
                {% if perms.refeed.change_category %}
                <a href="{% url 'refeed.views.categories.edit' category.id %}"/><i class="icon-pencil"></i></a>
                {%endif %}
                {% if perms.refeed.delete_category %}
                <a onclick="return confirm('Are you sure you would like to delete this category?');" href="{% url 'refeed.views.categories.delete' category.id %}"/><i class="icon-trash"></i></a>
                {% endif %}
                {% if perms.refeed.change_category %}
                <i style="cursor:move;" class="icon-resize-vertical"></i></td>
                {% endif %}
            </td>
        </tr>
        {%empty%}
        <tr><td colspan="2">No categories</td></tr>
        {%endfor%}
    </tbody>
</table>

{% if perms.refeed.add_category %}
<a href="{% url 'refeed.views.categories.create' %}" class="btn">Create new Category</a>
{% endif %}

{% endblock %}

我想做的事情似乎很简单,但我不能让它工作。我想在不同的模板上使用相同的循环,基本上只是将cateogory表添加到另一个名为“account”的模板中_查看.html'. 有人有什么建议吗?你知道吗


Tags: nameimportformidreturnifrequestrequired