我是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 } )
答案 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
时解析的公司详细信息