前提・実現したいこと
Djangoで既存テーブル(SQLServer)に対して、INSERT、UPDATE、DELETEを行う
アプリを作っています。
INSERTとUPDATEができる、save()でつまづいています。。。
こういうテーブルがあったとして
更新日 | 品目(primary_key=True) | 数量 |
---|---|---|
2019-12-01 | りんご | 100 |
2019-12-01 | みかん | 100 |
2019-12-01 | ばなな | 100 |
↓このレコードをINSERTしようとすると・・・
更新日 | 品目(primary_key=True) | 数量 |
---|---|---|
2019-12-02 | りんご | 200 |
↓
UPDATE扱いになり、当然こうなります。。。(品目が主キーなので)
更新日 | 品目(primary_key=True) | 数量 |
---|---|---|
2019-12-01 | りんご | 200 |
2019-12-01 | みかん | 100 |
2019-12-01 | ばなな | 100 |
★望む結果は↓これです
更新日 | 品目 | 数量 |
---|---|---|
2019-12-01 | りんご | 100 |
2019-12-01 | みかん | 100 |
2019-12-01 | ばなな | 100 |
2019-12-02 | りんご | 200 |
主キーを変えようにも、どの項目も
単項目としては重複があってもいいので、主キーにすることができません。。
UPDATEしてほしいのは、
更新日と品目が同一の時だけ、数量をUPDATEさせたいのです。。
そこで
調べると、複合キー(unique_together)が利用できるとあったので、
使ってみたのですが。。
Django
1class Fruit(models.Model): 2 更新日 = models.IntegerField(blank=True) 3 品目 = models.CharField(primary_key=True,max_length=50, blank=True) 4 数量 = models.IntegerField(blank=True) 5 6 class Meta: 7 unique_together = ('更新日', '品目') 8 managed = False 9 default_permissions = [] 10 db_table = 'Fruit'
結局データ取得すら出来なくなってしまいました。。。
primary_keyを無くすと、「primary_keyを設定してくれ~~」というエラーが出るしで、
困っています。。。。
つまり
unique_together の使い方を教えてください。。。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。