我在我的 Django 模型CalendarAssign中將外鍵日歷修改為可以為空。\
# ---------------------------------------------------------------------------- #
class Calendars(models.Model):
id = models.CharField(primary_key=True, max_length=100)
cms_id = models.CharField(max_length=100)
default_program = models.ForeignKey(ControlPrograms, models.CASCADE, blank=True, null=True)
timestamp = models.DateTimeField(auto_now_add=True)
class Meta:
managed = True
db_table = 'calendars'
# ---------------------------------------------------------------------------- #
class CalendarAssign(models.Model):
device_mac = models.ForeignKey(Device, models.CASCADE)
calendar = models.ForeignKey(Calendars, models.CASCADE, null=True)
timestamp = models.DateTimeField(auto_now_add=True)
class Meta:
managed = True
db_table = 'calendar_assign'
在應用 Django 生成的遷移時,它給了我一個錯誤。
operations = [
migrations.AlterField(
model_name='calendarassign',
name='calendar',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='smartbridge.Calendars'),
)
生成的 sql 代碼使用了不受支持的功能“WITH ORDINALITY”。這是因為 Django 不支持我們使用的 Postrges 版本。
WITH ORDINALITY 出現在 psql 9.4 中,但我們使用 9.1 版。
Postgres 和 Django 現在都不能升級。所以我需要手動撰寫遷移(沒有“WITH ORDINALITY”功能)。
migrations.RunSQL("DO $$DECLARE r record;\
BEGIN\
FOR r IN SELECT table_name,constraint_name \
FROM information_schema.constraint_table_usage \
WHERE table_name IN ('calendars') AND constraint_name like '
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/334446.html
標籤:Python 姜戈 PostgreSQL
下一篇:關于微服務架構中容器的可擴展性
