python - Django update MySQL database issue involving foreign keys -


good morning all,

i have following 2 models:

from django.db import models django.contrib.auth.models import user  # create models here.  class straightredteam(models.model):     teamid = models.integerfield(primary_key=true)     teamname = models.charfield(max_length=36)     country = models.charfield(max_length=36,null=true)     stadium = models.charfield(max_length=36,null=true)     homepageurl = models.charfield(max_length=36,null=true)     wikilink = models.charfield(max_length=36,null=true)     teamcode = models.charfield(max_length=5,null=true)     teamshortname = models.charfield(max_length=24,null=true)     currentteam = models.positivesmallintegerfield(null=true)      def natural_key(self):         return self.teamname      class meta:         managed = true         db_table = 'straightred_team'  class straightredfixture(models.model):     fixtureid = models.integerfield(primary_key=true)     home_team = models.foreignkey('straightred.straightredteam', db_column='hometeamid', related_name='home_fixtures')     away_team = models.foreignkey('straightred.straightredteam', db_column='awayteamid', related_name='away_fixtures')     fixturedate = models.datetimefield(null=true)     fixturestatus = models.charfield(max_length=24,null=true)     fixturematchday = models.integerfield(null=true)     spectators = models.integerfield(null=true)     hometeamscore = models.integerfield(null=true)     awayteamscore = models.integerfield(null=true)     homegoaldetails = models.textfield(null=true)     awaygoaldetails = models.textfield(null=true)     hometeamyellowcarddetails = models.textfield(null=true)     awayteamyellowcarddetails = models.textfield(null=true)      class meta:         managed = true         db_table = 'straightred_fixture' 

the following view works perfectly:

@csrf_exempt def updateteams(request):      if request.user.is_authenticated():          xmlsoccer = xmlsoccer(api_key='xyz', use_demo=true)         teams = xmlsoccer.call_api(method='getallteams')          numberofteamsupdated = 0          team in teams:              if 'team_id' in team.keys():                 teamupdate = straightredteam(teamid=team['team_id'],teamname=team['name'],stadium=team['stadium'])                 teamupdate.save()                 numberofteamsupdated = numberofteamsupdated + 1          return httpresponse(str(numberofteamsupdated) + " team/s have been added/updated.")      else:         return httpresponse("you must logged in update teams.") 

however, following view not work:

@csrf_exempt def updatefixtures(request):      if request.user.is_authenticated():          xmlsoccer = xmlsoccer(api_key='xyz', use_demo=true)         fixtures = xmlsoccer.call_api(method='getfixturesbyleagueandseason',                                    seasondatestring='1516',                                    league='scottish premier league')          numberoffixturesupdated = 0          fixture in fixtures:              if 'id' in fixture.keys():                 fixtureupdate = straightredfixture(fixtureid=fixture['id'],away_team=fixture['awayteam_id'],home_team=fixture['hometeam_id'])                 fixtureupdate.save()                 numberoffixturesupdated = numberoffixturesupdated + 1          return httpresponse(str(numberoffixturesupdated) + " fixture/s have been added/updated.")      else:         return httpresponse("you must logged in update teams.") 

when try call following error:

cannot assign "'54'": "straightredfixture.home_team" must "straightredteam" instance.

54 id correct teamid needs entered. 54 in teamdid of straightred_fixture table.

i assume foreign key not foreign key seems work perfectly. sure have simple syntax issue somewhere.

many may give, alan.

you upgraded older django version? if so, note now, when assigning foreign keys, must assign saved instance of foreign object. if want assign id, use <fieldname>_id

i believe, here,

fixtureupdate = straightredfixture(     fixtureid=fixture['id'],     away_team_id=fixture['awayteam_id'],     home_team_id=fixture['hometeam_id'] ) 

...should trick.


Comments

Popular posts from this blog

dns - How To Use Custom Nameserver On Free Cloudflare? -

python - Pygame screen.blit not working -

c# - Web API response xml language -