我在django中有两个模型,定义如下。 CreativeStatus型号:Django中的多字段外键
class RtbdCreativeStatus(models.Model):
creative_id = models.CharField(max_length=500, primary_key=True)
advertiser_id = models.CharField(max_length=100, primary_key=True)
exposure_level = models.CharField(max_length=125)
modified_on = models.DateTimeField()
modified_by = models.CharField(max_length=100)
class RtbdCreative(models.Model):
id = models.AutoField(primary_key=True)
advertiser_id = models.ForeignKey(RtbdCreativeStatus, on_delete=models.CASCADE)
creative_id = models.ForeignKey(RtbdCreativeStatus, on_delete=models.CASCADE)
country_id = models.IntegerField()
adm = models.CharField(max_length=255, null=True, blank=True)
sample_url = models.CharField(max_length=500)
landing_page = models.CharField(max_length=500, null=True, blank=True)
html = models.CharField(max_length=500)
creative_attributes = models.CommaSeparatedIntegerField(max_length=150, null=True, blank=True)
advertiser_domains = models.CharField(max_length=500)
description = models.CharField(max_length=500, null=True, blank=True)
created_on = models.DateTimeField(auto_now=True, auto_now_add=True)
creative_type = models.CharField(max_length=50, null=True, blank=True)
demand_source_type_id = models.IntegerField()
revalidate = models.BooleanField(default=False)
(CREATIVE_ID,ADVERTISER_ID)组合是我CreativeStatus表是唯一的。我希望那个组合成为Creative表格的外键。我试着添加它,但我得到这个错误。
1)如何使用两个组合键作为我的外键实现此连接?
2)我的查询应该从CreativeStatus表中获取所有具有其状态的广告素材。
阅读下面的答案UPDATE 1
,我更新了我的模型如下所述:
class RtbdCreative(models.Model):
id = models.AutoField(primary_key=True)
advertiser_id = models.ForeignKey(RtbdCreativeStatus, to_field='advertiser_id', related_name='advertiser', db_column='advertiser_id', on_delete=models.CASCADE)
creative_id = models.ForeignKey(RtbdCreativeStatus, to_field='creative_id', related_name='creative', db_column='creative_id', on_delete=models.CASCADE)
country_id = models.IntegerField()
adm = models.CharField(max_length=255, null=True, blank=True)
sample_url = models.CharField(max_length=500)
landing_page = models.CharField(max_length=500, null=True, blank=True)
html = models.CharField(max_length=500)
creative_attributes = models.CommaSeparatedIntegerField(max_length=150, null=True, blank=True)
advertiser_domains = models.CharField(max_length=500)
description = models.CharField(max_length=500, null=True, blank=True)
created_on = models.DateTimeField(auto_now=True, auto_now_add=True)
creative_type = models.CharField(max_length=50, null=True, blank=True)
demand_source_type_id = models.IntegerField()
revalidate = models.BooleanField(default=False)
现在我得到这个错误。我将advertiser_id,craetive_id组合为唯一。但django希望两者都是独一无二的。我能做些什么来使它工作?
我不太明白你的第二个问题,'CreativeStatus'表和'Creative'表不相关。但如果'RtdbCreativeStatus'表和'CreativeStatus'有任何相关的方式,你应该发布相应的模型,以便进一步的问题。 – zaidfazil
@FazilZaid RtbdCreative table是上面的Creative表格,我打算修改名称,截图有点旧。我只是想知道查询在按照您所建议的更新模型后在django –