[英]Django : Foreign Key to a choice field model
我对 Python / Django 比较陌生。
我正在尝试在食品与其所属的类别(名称)之间建立关系:
class Category(models.Model):
options=(
('vegetable','vegetable'),
('fruit','fruit'),
('carbs','carbs'),
('fish','fish'),
('meat', 'meat'),
('sweet', 'sweet'),
('dairy', 'dairy'),
)
name=models.CharField(max_length=10,choices=options,unique=True)
def __str__(self):
return self.name
class Fooditem(models.Model):
name = models.CharField(max_length=50)
category = models.ForeignKey(Category,on_delete=models.CASCADE)
上面的代码在运行 migrate 时抛出错误: ValueError: invalid literal for int() with base 10: 'vegetable'
我在数据库中创建了一些项目,是这个原因吗?
解决此问题的最佳方法是什么? 谢谢你,D
它会修复它,但你可能会得到一些意想不到的结果。
category = models.ForeignKey(Category,on_delete=models.CASCADE)
将是一个指向另一个 model 的 id。
您可以通过将 name 更改为以下内容来将其设为主键:
name=models.CharField(max_length=10,choices=options,unique=True,primary_key=True)
此外,更仔细地查看https://docs.djangoproject.com/en/3.1/ref/models/fields/#choices可能会帮助您在未来做出选择。 它将编程更容易定义为成本并遵循他们的语法
我真的建议你这样做。 如果有不清楚的地方请告诉我
class Category(models.TextChoices):
vegetable='vegetable'
fruit='fruit'
carbs='carbs'
fish='fish'
meat='meat'
sweet='sweet'
dairy='dairy'
class Fooditem(models.Model):
name = models.CharField(max_length=50)
category = models.CharField(max_length=20, choices=Category.choices)```
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.