示例模型:
class GenderDecode(models.Model):
gender_code = models.IntegerField(primary_key= True)
gender_explain = models.CharField(max_length=100)
class AgeDecode(models.Model):
age_code = models.IntegerField(primary_key= True)
age_explain = models.CharField(max_length=100)
class User(models.Model):
name = models.CharField(max_length=100)
age_group = models.ForeignKey(AgeDecode, on_delete = models.CASCADE)
gender_group = models.ForeignKey(GenderDecode, on_delete = models.CASCADE)
GenderDecode
和AgeDecode
表的初始设置:
GenderDecode
gender_code gender_explain
1 male
2 female
AgeDecode
age_code age_explain
1 young
2 old
假设我想创建一个新用户- John Male Young。我必须这么做。
User(name = 'John',
age_group = AgeDecode.objects.filter(gender_code=1).first(),
gender_group = GenderDecode.objects.filter(age_code=1).first()
).save()
我想做这个
User(name = 'John',
age_group = 1,
gender_group = 1
).save()
但是我得到了这个错误
ValueError: Cannot assign "1": "User.gender_group" must be a "GenderDecode" instance.
好吧,如果上面的语法是必须的,有没有办法去简化我的新行代码?
可以这样使用外键字段的_id
:
User(
name='John',
age_group_id=1,
gender_group_id=1
).save()