【问题标题】:Error When migrating after using 2 foreign keys of same table使用同一张表的 2 个外键后迁移时出错
【发布时间】:2018-07-18 10:05:35
【问题描述】:

在我的模型中,我必须有 2 个相同模型的外键。我尝试了相关名称,所以 makemigrations 工作正常。但是当我尝试迁移时,它会抛出一个错误并说

django.db.utils.ProgrammingError: column "service_requested_by_id" cannot be cast automatically to type uuid
HINT:  You might need to specify "USING service_requested_by_id::uuid".

我的模特

class Schedule(BaseModel):
    project = models.ForeignKey("projects.Project",null=True,blank=True)
    description = models.TextField(blank=True,null=True)
    vehicle = models.ForeignKey("logistics.Vehicle",null=True,blank=True)
    driver = models.ForeignKey("staffs.Staff",related_name='driver',blank=True,null=True)
    service_requested_by = models.ForeignKey("staffs.Staff",related_name='service_requested_by',blank=True,null=True)
    start_time = models.DateTimeField(null=True,blank=True)
    end_time = models.DateTimeField(null=True,blank=True)
    is_deleted = models.BooleanField(default=False)
    starting_km = models.DecimalField(null=True,blank=True,default=0,decimal_places=0, max_digits=15,validators=[MinValueValidator(Decimal('0'))])
    completed_km = models.DecimalField(null=True,blank=True,default=0,decimal_places=0, max_digits=15,validators=[MinValueValidator(Decimal('0'))])
    travelled_km = models.DecimalField(null=True,blank=True,default=0,decimal_places=0, max_digits=15)

    class Meta:
        db_table = 'schedule'
        verbose_name = _('schedule')
        verbose_name_plural = _('schedules')
        ordering = ('vehicle',)  

    class Admin:
        list_display = ('vehicle',)

    def __unicode__(self):
        if self.vehicle:
            return self.vehicle.name
        else:
           return str(self.project)

在我添加 service_requested_by 字段之前一切正常。任何暗示我可能做错了什么?我需要在此代码旁边发布其他任何内容吗?

【问题讨论】:

    标签: python django postgresql django-models


    【解决方案1】:

    好的,发生错误是因为我将列 service_requested_by 的类型从 textinput 更改为外键。它把整个事情搞砸了。我需要做的是创建另一个具有不同名称的列,并保持旧列不变,而不更改其类型。现在一切正常。

    【讨论】:

      猜你喜欢
      • 2018-08-01
      • 2021-02-21
      • 2015-10-08
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      • 2023-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多