python - Django:如何创建表,然后通过它们更新数据库

标签 python django django-models django-forms

我是 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.. 然后他被重定向到另一个页面,我想在其中显示该特定团队的表格。而且我还希望该页面是可编辑的。如果我使用模型形式,那么我将无法访问我的团队模型的单个对象。

更新 2: 我仍然停留在这个问题上。我不明白如何只显示模型类的少数元素和变量而不是全部。除此之外,我不明白如何创建一个表单,该表单可以从用户那里获取有关要编辑的数据库对象的输入,然后显示该特定对象是可编辑的。

最佳答案

相关提问者-评论herehere . 首先,你应该把你的类名写成大写。请查看 documentation .

您可以像这样为查询集创建表单。

表单.py

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

urls.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))

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

关于python - Django:如何创建表,然后通过它们更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12828913/

相关文章:

python - 在 Python 中操作目录路径

Django - 在启动时使用已知值填充表

带有 xapian 引擎的 Django-haystack : can't execute update_index if model has ManyToManyField

django - 在 Django 模型中创建自定义 id 字段

python - 2019 : Dynamic cron jobs Google App Engine

python - 导入错误/lib/ld-linux-armhf.so.3 : version `gLIB _2.4' not found

python - Django 文件上传和重命名

django - 手动构造 JSON 并手动处理 GET、POST 而不是使用适当的 RESTful API 来实现 AJAX 功能是否很麻烦?

sql - 使用 select_related() 的 Django 过滤器

python - 使用 `get_or_create` 时不隐藏软删除实例