我有三种型号:
class Agent(models.Model):
name = models.CharField(max_length=200)
class Phone(models.Model):
calls = models.CharField(max_length=200)
agent_phone_name = models.CharField(max_length=200)
agent = models.ForeignKey(Agent, on_delete=models.CASCADE)
class Chat(models.Model):
chats = models.CharField(max_length=200)
agent_chat_name = models.CharField(max_length=200)
agent = models.ForeignKey(Agent, on_delete=models.CASCADE)
聊天和电话链接到具有外键的座席。我想制作一张这样的桌子:
agent1 | sum(calls) | sum(chats)
agent2 | sum(calls) | sum(chats)
agent3 | sum(calls) | sum(chats)
第一个问题是:我已经阅读了有关SQL外键的信息,该外键是维护数据和引用完整性的一种方式。但是,在我的情况下,有一些未命中的呼叫和聊天(代理未接听),它们生成的数据行的agent_name值为空。因此,当我插入电话/聊天数据并更新FK时,我将FK留为空白,这有点与FK的思想相冲突。处理此问题的最佳方法是什么?
第二个问题是:使用外键是在Django ORM中执行SQL连接表查询的唯一方法吗?还有其他解决方法吗?
谢谢!
Hi Viviwill,
Did you resolve your problem?
Could you please help me by posting the answer. I have a same problem ans I want to merge dimension.
Best,
class TabInfo(models.Model):
user = models.ForeignKey(User, default=None, on_delete=models.CASCADE, unique=False)
start_date = models.DateField('Start Date', default=date.today)
end_date = models.DateField('End Date', default=date.today)
advertiser = models.CharField('Advertiser', max_length=100)
dsp = models.CharField('DSP', max_length=30)
insertion_order = models.CharField('Insertion Order', max_length=300)
signed_budget = models.DecimalField(max_digits=20, decimal_places=2, default=Decimal('0.00'))
class TabSource(models.Model):
# user = models.ForeignKey(User, default=None, on_delete=models.CASCADE, unique=False)
date = models.DateField('date')
dsp = models.CharField('dsp', max_length=30)
advertiser = models.CharField('advertiser', max_length=100)
insertion_order = models.CharField('campaign', max_length=300)
strategy_name = models.CharField(max_length=300)
creative_name = models.CharField(max_length=400)
spent_budget = models.DecimalField(max_digits=20, decimal_places=2, default=Decimal('0.00'))
impressions = models.IntegerField()
clics = models.IntegerField()
conversions = models.IntegerField()
post_clic_conversions = models.IntegerField()
post_view_conversions = models.IntegerField()