我对 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)
上面的代码在运行迁移时抛出错误: ValueError:int() 的文字无效,基数为 10:'vegetable'
我在数据库中创建了一些项目,是这个原因吗?
解决这个问题的最佳方法是什么? 谢谢,
答案 0 :(得分:0)
它会修复它,但你可能会有一些意想不到的结果。
category = models.ForeignKey(Category,on_delete=models.CASCADE)
将是指向另一个模型的 id。
您可以通过将名称更改为以下内容来使名称成为主键:
name=models.CharField(max_length=10,choices=options,unique=True,primary_key=True)
此外,更仔细地查看 https://docs.djangoproject.com/en/3.1/ref/models/fields/#choices 可能会帮助您确定未来的选择。定义为costant并遵循其语法将更容易编程
答案 1 :(得分:0)
我真的建议你这样做。如果有什么不清楚的,请告诉我
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)```