为了账号安全,请及时绑定邮箱和手机立即绑定

如何将选择框的值作为外键传递(Django)

如何将选择框的值作为外键传递(Django)

函数式编程 2024-01-24 20:49:57
您好,我正在开发 Django Web 应用程序 - 我有一个选择框,其中包含特定模型中的所有对象。选择框是在模板中创建的,它不是直接表单的一部分。当我提交时,我能够访问用户选择的值,但是当我尝试使用该值作为查询集的一部分时,它不会返回预期值。models.pyclass TaskGroup(models.Model):    name = models.CharField(max_length=100, null=False, blank=False)    def __str__(self):        return self.nameclass TaskGroupDetail(models.Model):    taskGroup = models.ForeignKey(TaskGroup, null=True, blank=True)    taskType = models.ForeignKey(TaskType, null=False, blank=False)views.pydef CreateShipmentView(request):    if request.method == 'POST':        shipment_form = CreateShipmentForm(request.POST)        if shipment_form.is_valid():            new_shipment = shipment_form.save()            group = request.POST.get('groups') #get the task group selected            print(group) #this returns the expected value                        .....                    #if a task group was added, create the tasks            groupDetails = TaskGroupDetail.objects.get(taskGroup = group) #this returns a blank queryset            print(groupDetails) #this returns a blank queryset            return redirect('ShipmentListView')        ...    else:        shipmentForm = CreateShipmentForm()        groups = TaskGroup.objects.all()        context = {            'shipmentForm': shipmentForm,            'groups': groups,        }        return render(request, 'create-shipment.html', context)print(group)当我得到我期望的值时引用上面的代码,我可以看到该值与taskGroup我尝试在查询集中返回的对象的字段相匹配。我假设这与值从选择传递到视图的方式有关(就像它不是 TaskGroup 对象或其他东西),但我不太确定此时要尝试修复它。有什么想法吗?
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

由于 Group 是用 TaskGroup 的名称分配的,因此而不是 get(taskGroup = group)。然后使用 get(taskGroup__name = group) 来访问 taskGroup name 属性。



查看完整回答
反对 回复 2024-01-24
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信