4

我是 Django 的新手,我已尽力理解它,但我还有很长的路要走。我正在做一个项目,在该项目中我必须制作一个网页,我必须在其中显示来自这些类的数据:

class team(models.Model):
    team_name = models.CharField(max_length = 40)
    def __unicode__(self):
            return self.team_name

class metric(models.Model):
    team = models.ForeignKey(team)
    metric_name = models.CharField(max_length = 40)
    def __unicode__(self):
            return self.metric_name


class members(models.Model):
    metric = models.ForeignKey(metric)
    member_ID = models.CharField(max_length = 40)
    member_name = models.CharField(max_length = 40, null=True, blank=True)
    def __unicode__(self):
            return self.member_ID

此外,我希望这些数据也可以编辑。这意味着应该有一个编辑按钮,一旦按下,用户就可以编辑这些字段,一旦他保存它,数据库就会自动更新。

现在据我了解。我需要使用某种表格来显示这些数据,然后一旦用户单击“编辑”按钮,我就必须将表格更改为表格,以便他可以编辑数据?然后在他点击保存后更新数据库。

我不确定如何在 Django 中完成所有这些操作。如果有人可以请逐步向我介绍如何进行,也许可以参考一些参考资料这对我有很大帮助

谢谢 :)

更新:我之前忘了提。我已经创建了一个用户选择 team_name 的页面。然后他被重定向到另一个页面,我想在其中显示该特定团队的表格。而且我还希望该页面是可编辑的。如果我使用模型表单,那么我将无法访问我的团队模型的单个对象。

UPDATE2:我仍然坚持这一点。我不明白如何只显示模型类的几个元素和变量,而不是全部。除此之外,我不明白如何创建一个表单,该表单可以从用户那里获取要编辑的数据库对象的输入,然后显示某些可编辑的对象。

4

2 回答 2

4

与此处此处的提问者评论相关。首先,你应该把你的类名大写。请检查文档

您为这样的查询集创建表单。

表格.py

from django.forms import ModelForm
class MembersForm(ModelForm):
    class Meta:
        model = Members

网址.py

from django.conf.urls.defaults import *

urlpatterns = patterns('yourapp.views',
    url(r'^$',
        # /
        view = 'index',
        name = 'team-index',
    ),
    url(r'^(?P<lookup_team>[-\w]+)/$',
        # .../team-extreme/
        view = 'update',
        name = 'update-members',
    ),
)

views.py(您的应用程序的)

from django.http import HttpResponse
from django.template.context import RequestContext
from django.shortcuts import render_to_response, reverse, redirect
from yourapp.models import Members
from yourapp.forms import MembersForm

def index(request):
    queryset = Members.objects.all()

    template = 'yourapp/index.html'
    kwvars = {
        'data': queryset,
    }
    return render_to_response(template, kwvars, RequestContext(request))


def update(request, lookup_team):
    """change members being in a special team"""

    queryset = Members.objects.filter(metric__team__team_name=lookup_team)

    if request.POST:
        form = MemberForm(request.POST, instance=queryset)
        if form.is_valid():
            form.save()
            return redirect(reverse('team-index'))
    else:
        form = MemberForm(instance=queryset)

    template = 'yourapp/update.html'
    kwvars = {
        'form': form,
    }
    return render_to_response(template, kwvars, RequestContext(request))

希望这可以帮助。如果您有任何问题,请给我留言。

于 2012-10-11T05:44:19.013 回答
1

如果您想像描述的那样动态地实现它,那么仅靠 Django 是不可能的;Django 可以为您提供表格和表单,但是无需重新加载页面的动态更改(我猜这是您真正想要的)需要一些客户端代码 JavaScript。

但是关于显示数据和表单:使用 Django 的基于类的通用视图。

ListViewDetailsView应该让您开始显示模型中的数据。

ModelForm 结合适当的通用编辑视图应该可以帮助您编辑数据。

默认情况下,这些视图将以某些(通常有用的)格式返回数据,并且可以使用您自己的模板进行自定义。我建议您阅读我提供给您的链接并从那里开始工作。那应该让你继续前进。

于 2012-10-10T22:34:26.043 回答