我看到django文件有时会同时使用?它们是一样的吗?有什么区别,参考在哪里?我只看到pk的文档.
顺便说一句,django参考是否覆盖了其类的所有方法?
我试图从模型A中获取一个随机对象
目前,它正在使用此代码:
random_idx = random.randint(0, A.objects.count() - 1)
random_object = A.objects.all()[random_idx]
Run Code Online (Sandbox Code Playgroud)
但我觉得这段代码更好:
random_object = A.objects.order_by('?')[0]
Run Code Online (Sandbox Code Playgroud)
哪一个是最好的?使用第一个代码删除对象可能出现问题?因为,例如,我可以有10个对象但是数字10作为id的对象不再存在?我在A.objects.all()[random_idx]中误解了什么吗?
我有一个复杂的django对象,它具有其他类类型的属性.这是这样的:
class Order:
contractor - type Person
some other fields....
Run Code Online (Sandbox Code Playgroud)
在我的表单中,我希望能够从下拉列表中选择现有的Person对象,或者添加一个带有表单的新对象.我已经设法创建表单和适当的工作流程,但问题是保存Order本身,我根本无法获取已保存的Person实例的id.我这样做:
def make_order(request):
if request.method == 'POST':
parameters = copy.copy(request.POST)
contractor_form = ContractorForm(parameters)
if contractor_form.is_valid():
contractor_form.save()
parameters['contractor'] = ???
form = OrderForm(parameters)
if form.is_valid():
form.save()
return HttpResponseRedirect('/orders/')
else:
form = OrderForm()
contractor_form = ContractorForm()
return render_to_response('orders/make_order.html', {'order_form' : form, 'contractor_form' : contractor_form})
Run Code Online (Sandbox Code Playgroud)
因此,如果POST请求到达此方法,我首先检查ContractorForm是否已被填充 - 我假设如果表单有效,则表示要使用它.如果是,则保存,并希望将保存对象的数据库ID分配给适当的字段,以便OrderForm找到它.
我所有的表单都是ModelForms.
问题是:
编辑
我的ContractorForm是:
class ContractorForm(ModelForm):
class Meta:
model = Contractor
Run Code Online (Sandbox Code Playgroud)
没有什么花哨.