小编xyz*_*ace的帖子

如何使用UpdateView更新Django模型?

我正在尝试使用基于类的通用视图UpdateView更新Django中的模型.

我阅读了使用基于类的UpdateView在Django中更新用户模型的页面,试着让我开始,但是我收到一个错误'WSGIRequest'对象没有属性'id'

我是Django的新面孔,所以如果我做一些愚蠢的事情,请原谅.

//urls.py

url(r'^portfolios/update/(?P<id>\d+)/$',PortfoliosUpdateView.as_view()),
Run Code Online (Sandbox Code Playgroud)

//views.py

class PortfoliosUpdateView(UpdateView):
    form_class = PortfoliosCreateForm
    model = Portfolios
    template_name = 'portfolios/create.html'

    def get(self, request, **kwargs):
        self.object = Portfolios.objects.get(id=self.request.id)
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        context = self.get_context_data(object=self.object, form=form)
        return self.render_to_response(context)

    def get_object(self, queryset=None):
        obj = Portfolios.objects.get(id=self.request.id)
        return obj
Run Code Online (Sandbox Code Playgroud)

它主要只是最初发布的代码的修改版本,但我认为它有用.我知道我正在尝试检索作为GET参数传递的id,但在请求变量中似乎没有.我是以错误的方式来做这件事的吗?

谢谢

编辑:我想我修好了,但这可能是错的:我换了线

self.object = Portfolios.objects.get(id=self.request.id)
obj = Portfolios.objects.get(id=self.request.id)
Run Code Online (Sandbox Code Playgroud)

self.object = Portfolios.objects.get(id=self.kwargs['id'])
obj = Portfolios.objects.get(id=self.kwargs['id'])
Run Code Online (Sandbox Code Playgroud)

我错了.

django view

20
推荐指数
2
解决办法
5万
查看次数

为每个节点分配深度

我在这里看了几篇看似相似的文章,但没有完全回答我的问题.我已经给出了一个分配的问题,即为二叉树中的每个节点分配各自的深度.我只是不太明白.

作为参考,这是我的代码:

struct treeNode {
   int item;
   int depth;
   treeNode *left;
   treeNode *right;
};
typedef treeNode *Tree;

int assignDepth(Tree &T, int depth)
{
    if(T!=NULL)
    {
        depth = assignDepth(T->left, depth++);
        T->depth = depth;
        depth = assignDepth(T->right, depth++);
    }
    else //leaf
        return depth--;
}
Run Code Online (Sandbox Code Playgroud)

我试着用笔和纸来完成它看起来很好,但我的桌面检查技巧显然缺乏.

有人能指出我正确的方向吗?这是我第一次使用树木,递归不是我的强项.

回答:

void treecoords(Tree &T, int depth)
{
    static int count = -1; //set to -1 so the precrement before assignment doesn't give the wrong values
    if(T!=NULL)
    {
        treecoords(T->left, depth+1); //depth decrements automatically …
Run Code Online (Sandbox Code Playgroud)

c++ recursion binary-tree

6
推荐指数
1
解决办法
3954
查看次数

如何将当前用户ID作为Django表单中的隐藏字段传递?

我遇到的问题是我正在尝试创建一个表单,通过将其嵌入ModelForm中的隐藏字段中来传递当前登录的用户ID.

我的模特:

class Portfolios(models.Model):
    id = models.AutoField(primary_key=True)
    port_name = models.CharField(max_length=135, blank=True)
    port_type = models.ForeignKey(PortType, null=True, db_column='port_type', blank=True)
    user = models.ForeignKey(User)

    def __unicode__(self):
        return self.port_name;

class Meta:
    db_table = u'tbl_portfolios'
Run Code Online (Sandbox Code Playgroud)

我的表格:

class PortfoliosCreateForm(ModelForm):
    class Meta:
        model = Portfolios;
Run Code Online (Sandbox Code Playgroud)

我的模板:

<form action="" method="post">
    {% csrf_token %}
    {% for field in form %}
        <div class="create_form_field">
            {{ field.errors }}
            {{ field.label_tag }}: {{ field }}
        </div>
    {% endfor %}
    <input type="submit" value="Create" /></p>
</form>
Run Code Online (Sandbox Code Playgroud)

我使用通用的创建视图调用模板:

url(
    r'^portfolios/create/$',
    'django.views.generic.create_update.create_object',
    dict(
        form_class=PortfoliosCreateForm,
        post_save_redirect='/',
        template_name='portfolios/create.html'
    )
Run Code Online (Sandbox Code Playgroud)

) …

forms django hidden

2
推荐指数
1
解决办法
4025
查看次数

无法批量分配受保护的属性

我已经阅读了关于这个问题的一些SO文章,但它们似乎都没有起作用.我正在为我的一个表创建种子数据,每当我运行rake db:seed时它会给我错误:

Can't mass-assign protected attributes: severity
Run Code Online (Sandbox Code Playgroud)

我的两个模特看起来像

class Status < ActiveRecord::Base
  belongs_to :severity
  attr_accessible :description, :image, :name, :slug, :severity_id
end
Run Code Online (Sandbox Code Playgroud)

class Severity < ActiveRecord::Base
  attr_accessible :name, :val, :severity_id
end
Run Code Online (Sandbox Code Playgroud)

我试图种下的数据是

statuses = Status.create(
  [
    {
      "name"=> 'Normal', 
      "slug"=> 'normal', 
      "description"=> 'The service is up or was up during this entire period', 
      "severity"=> 1,
      "image"=> 'tick-circle'
    }
  ]
)
Run Code Online (Sandbox Code Playgroud)

我很难理解为什么会这样.有什么建议吗?

提前致谢

ruby ruby-on-rails mass-assignment

2
推荐指数
1
解决办法
88
查看次数