1
我有两个型号,组合键:复合键
class ContestUser(models.Model):
user_id = models.IntegerField(primary_key = True)
contest_id = models.IntegerField(primary_key = True)
username = models.CharField(max_length = 1536, blank = True)
.
.
.
class ContestRegistration(models.Model):
user_id = models.IntegerField(primary_key = True)
contest_id = models.IntegerField(primary_key = True)
status = models.IntegerField(choices = EJUDGE_CONTEST_STATUSES)
.
.
.
首先的问题是如何能与他们和查询一样加入进来。
从ContestRegistration中选择*加入ContestUser在r.user_id = u.user_id和r.contest_id = u.contest_id其中r.contest_id = 3;
二是如何保存这样的对象?
cuser = ContestUser.objects.get(user_id = 1, contest_id = 1)
cuser.username = 'username'
cuser.save()
这导致IntegrityError:(1062, “关键 '主要' 重复条目 '1-1'”)
执行的SQL是:
SELECT * FROM `users` WHERE (`users`.`contest_id` = 1 AND `users`.`user_id` = 1);
SELECT (1) AS `a` FROM `users` WHERE `users`.`user_id` = 1 LIMIT 1;
UPDATE `users` SET ... WHERE `users`.`user_id` = 1 ;