【问题标题】:Create django object using a view with no form使用没有表单的视图创建 django 对象
【发布时间】:2012-12-05 18:54:05
【问题描述】:

我想知道如何根据用户将要访问的 URL 在数据库中创建对象。

例如,他们将转到 /schedule/addbid/1/,这将在表中创建一个对象,其中包含投标的所有者、他们投标的时间表以及投标是否已完成。到目前为止,这就是我的模型的出价。

class Bids(models.Model):
   id = models.AutoField("ID", primary_key=True, editable=False,)
   owner = models.ForeignKey(User)
   biddedschedule = models.ForeignKey(Schedule)
   complete = models.BooleanField("Completed?", default=False)

biddedschedule 将基于 URL 中的数字,因为在这种情况下 1 将是计划表中的第一个计划

关于如何做到这一点的任何想法?

【问题讨论】:

    标签: python django django-models django-views


    【解决方案1】:

    您应该使用urls.py 获取id 参数:

    #urls.py
    from appname.views import some_view
    
    urlpatterns = patterns('',
        url(r'^schedule/addbid/(?P<id>\d+)$', some_view),
        ...
    )
    

    查看有关 capturing parameters in the urlconf 的文档。

    然后,在 views.py 中,您应该使用在 URL 中传递的 id、当前登录的用户 (request.user) 和数据库中的 biddschedule 构造一个 Bids 对象。例如:

    #views.py
    def some_view(request, id):
        if request.user.is_authenticated():
            # get the biddschedule from your DB
            # ...
            bids = models.Bids(id=id, owner=request.user, biddedschedule=biddedschedule)
            bids.save()
            return HttpResponse("OK")
        return Http404()
    

    【讨论】:

      【解决方案2】:

      通过 urlconf 获取号码。通过request.user 获取当前用户。通过调用其构造函数创建模型实例,并通过其save() 方法将其保存到数据库中。

      【讨论】:

        【解决方案3】:
        `#view.py under a post or get method`
        
            new_bird, created = Bids.objects.get_or_create(
                 owner = user_obj,
                  biddedschedule = biddedschedule_obj,                
                  complete = bool
                  )
            new_bird.save()
        

        【讨论】:

        • 请解释一下代码的作用和它是怎么做的。
        猜你喜欢
        • 2016-04-09
        • 2011-09-07
        • 2022-10-14
        • 2016-02-12
        • 1970-01-01
        • 1970-01-01
        • 2014-12-28
        • 2018-02-15
        • 2011-12-23
        相关资源
        最近更新 更多