我试图用一个task函数更新django中的三个模型,并使用外键将它们链接在一起。活动,市场&;跑步者
我希望能够在我的视图中查询数据并显示数据。你知道吗
一个项目有多个市场,每个市场都有多个参赛者。你知道吗
当我尝试使用外键将三个模型链接在一起时,出现了一个错误。你知道吗
django.db.utils.ProgrammingError: relation "apimb_event" does not exist
STATEMENT: SELECT "apimb_event"."event_id", "apimb_event"."event_name", "apimb_event"."start_time", "apimb_event"."status" FROM "apimb_event" ORDER BY "apimb_event"."event_id" DESC LIMIT 21
更新: 在核数据库和重新开始后,我有一个类似的错误。你知道吗
apimb.models.DoesNotExist: Market matching query does not exist.
psycopg2.errors.NotNullViolation: null value in column "event_id"
violates not-null constraint DETAIL: Failing row contains
(1271204194200017, null, null, null, null).
我想我没有正确使用外键。每个模型都有一个id作为主键。 我可以在不使用外键的情况下很好地更新和创建数据,但是, 如何更新模型,然后查询数据以显示如下?你知道吗
Event Market Runner
event_name_1 market_name_1 runner_name_1
runner_name_2
runner_name_3
event_name_1 market_name_2 runner_name_1
runner_name_2
runner_name_3
runner_name_4
任务功能
@shared_task(bind=True)
def get_events(self):
api = get_client()
events = api.market_data.get_events(sport_ids=[9],states=MarketStates.All,
per_page=200, offset=0,
include_event_participants=Boolean.T,
category_ids=None, price_depth=3,
side=Side.All, session=None)
for event in events:
event_name = event["name"]
event_id = event['id']
start_time = event['start']
status = event["status"]
ev, created = Event.objects.update_or_create(event_id=event_id)
ev.event_name = event_name
ev.start_time = start_time
ev.status = status
ev.save()
markets = event["markets"]
for market in markets:
event_id = market['event-id']
market_id = market['id']
market_name = market['name']
status = market['status']
volume = market['volume']
ma, created = Market.objects.update_or_create(market_id=market_id)
ma.market_name = market_name
ma.status = status
ma.volume = volume
ma.save()
runners = market["runners"]
for runner in runners:
runner_name = runner['name']
runner_id = runner['id']
event_id = runner['event-id']
runner, created = Runner.objects.update_or_create(runner_id=runner_id)
runner.event_id = event_id
runner.runner_name = runner_name
runner.save()
型号.py
class Event(models.Model):
event_id = models.BigIntegerField(primary_key=True)
event_name = models.CharField(max_length=200, null=True)
start_time = models.DateTimeField(null=True)
status = models.CharField(null=True, max_length=13)
class Market(models.Model):
event = models.ForeignKey(Event, on_delete=models.CASCADE)
market_id = models.BigIntegerField(primary_key=True)
market_name = models.CharField(null=True, max_length=35)
status = models.CharField(null=True, max_length=10)
volume = models.FloatField(null=True, max_length=15)
class Runner(models.Model):
market = models.ForeignKey(Market, null=True, on_delete=models.SET_NULL)
runner_id = models.BigIntegerField(primary_key=True)
event_id = models.BigIntegerField(null=True)
runner_name = models.CharField(max_length=100)
目前没有回答
相关问题 更多 >
编程相关推荐