2

我想知道如何根据用户要访问的 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 将是调度表中的第一个调度

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

4

3 回答 3

5

您应该id使用以下方法获取参数urls.py

#urls.py
from appname.views import some_view

urlpatterns = patterns('',
    url(r'^schedule/addbid/(?P<id>\d+)$', some_view),
    ...
)

查看有关在 urlconf 中捕获参数的文档

然后,您应该使用传入的 URL、当前登录的用户 ( ) 和数据库中的views.py构造一个BidsObject 。例如:idrequest.userbiddschedule

#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()
于 2012-12-05T19:07:01.260 回答
2

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

于 2012-12-05T18:56:04.567 回答
-1
`#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()
于 2021-04-24T10:40:14.750 回答