我想知道如何能够根据用户要访问的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将是计划表中的第一个计划
关于如何做到这一点的任何想法?
答案 0 :(得分:5)
您应该使用id
获取urls.py
参数:
#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中传递的Bids
,当前登录的用户(id
)和request.user
来构造biddschedule
对象来自您的数据库的{1}}。例如:
#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()
答案 1 :(得分:1)
通过urlconf捕获号码。通过request.user
获取当前用户。通过调用其构造函数创建模型实例,并通过其save()
方法将其保存到数据库中。
答案 2 :(得分:-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()