django 2.1, как получить значение из базы данных и присвоить его внешнему ключу - PullRequest
0 голосов
/ 01 октября 2019

Я новичок в 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 )

как мне это сделать, поскольку я не хочу передавать значение FK через URl, вместо этого я хочу запросить значение иназначить его во время обработки формы. Каждому пользователю разрешено создавать только одну компанию, поэтому я хочу назначить comoany_name, которое относится к пользователю, который создал имя компании, и присвоить его FK.

views:

      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 голосов
/ 02 октября 2019

q = Company.objects.all() не может быть прав. Это набор запросов, который возвращает список всех объектов компании. Но вам нужна ОДНА компания, поэтому вы можете присвоить 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...