以下の定義のdjangoには2つのモデルがあります。 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つのキーの組み合わせでこの結合を達成するにはどうすればよいですか。
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は、両方がユニークであることを期待しています。私はそれを動作させるために何をすることができますか?
私は2番目の質問をよく理解していませんでした。「CreativeStatus」テーブルと「Creative」テーブルは関連していません。しかし、 'RtdbCreativeStatus'テーブルと' CreativeStatus'が何らかの方法で関係している場合は、さらなる質問のためにそれぞれのモデルを投稿する必要があります.. – zaidfazil
@FazilZaid RtbdCreativeテーブルは上記のクリエイティブテーブルです、私は名前を変更する予定です、スクリーンショットは少しです古い。私はちょうどdjango –