我在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 –