大家好,非常感谢DAILY的支持。现在,我发誓在许多例子和相关主题之间找不到答案:
我有一个车辆型号和一个轮胎车型。两者将通过一个字段PLATE连接;
class Vehicles(models.Model):
Plate= models.CharField(max_length=10)
Quantity = models.IntegerField(default=0)
Vendor = models.CharField(max_length=50)
def __str__(self):
return self.matricula
class Tires(models.Model):
Plate = models.ForeignKey(Vehicle, default=0, on_delete=models.SET_DEFAULT) # --- tires would be placed in an exisiting vehicle (plate), or , if not in use, "Tires.Plate=0"
Number = models.IntegerField(unique=True)
我需要这两个允许我做什么,他们真正做什么或不做什么:
- 向车辆添加记录。。。。。。。。。。。。。。。。。是
- 在下拉菜单中添加带有预定义车牌号的轮胎,从车辆牌照…………..是,检查
- 添加车牌号为0的轮胎,表示轮胎未被任何人使用交通工具否,未检查;菜单只提供"Vehicles.Plate"中现有的车牌:即使我尝试添加DEFAULT值
- 从TIRES中删除寄存器。。。。。。。。。检查
- 正在从中删除寄存器车辆。。。。。。。未检查;这样做,而不是相应的轮胎。铭牌默认为0,正如我从
"...ForeignKey(Vehicle, default=0, on_delete=models.SET_DEFAULT)"
,I获得"FOREIGN KEY constraint failed">错误
因此,实际上,我移除车辆导致了完整性错误-我已经阅读了外键、1空键的定义和逻辑,很抱歉,但实际上,我读过的任何示例或教程都没有概述这种特定的使用情况。
你能给我一个主意吗,请在那里调查一下?
如果外键不需要值,则应使用null
而不是0
作为外键的默认值
Plate = models.ForeignKey(Vehicle, null=True, blank=True, on_delete=models.SET_NULL)