django 2.1如何从db获取值并将其分配给外键

时间:2019-10-01 14:44:20

标签: django

我是python django的新手,我发现从数据库中获取数据并将其分配给外键有点挑战。我正在使用Postgres数据库。

型号:

      class Company (models.Model):
           author = models.ForeignKey ( User , on_delete = models.CASCADE )
           comapny_name = models.CharField ( max_length = 32 , null = False , blank = False )

      class owner (models.Model):
           company = models.ForeignKey ( Company, on_delete = models.CASCADE )
           owner_name = models.CharField ( max_length = 32 , null = False , blank = False )

我应该如何处理它,因为我不想通过URl传递FK的值,而是我想查询该值并在表单处理期间分配它。每个用户只能创建一个公司,因此我想分配与h创建公司名称的用户相关的comoany_name并将其分配给FK。

观看次数:

      def createownerform (request):
         q = Company.objects.all()
         if request.method == 'POST' :
             form = ownerform( request.POST )
             if form.is_valid ( ) :
                 instance = form.save ( commit = False )
                 instance.company_id = q.id
                 instance.save ( )
                 return redirect ( 'str_dashboard' )
         else :
             form = businessmodelform ( )
         return render ( request , 'str_business.html' , { 'form' : form } )

1 个答案:

答案 0 :(得分:0)

q = Company.objects.all()不正确。这是一个查询集,将返回所有Company对象的列表。但是,您只需要一家公司,就可以分配instance.company_id = q.id

也许你是说

q = Company( ).save   # to create a new Company with all defaults
q = Company( kw=value, ... ) # to create with specified values for fields
q.save() # so it gets an id

q = get_object_or_404( Company, kw=value, ...)

其中kw = value标识要从数据库中查询的唯一公司对象,并引用在调用urls.py时解析的公司详细信息