Problem mit Django CheckConstraintPython

Python-Programme
Guest
 Problem mit Django CheckConstraint

Post by Guest »

Ich versuche, einem vorhandenen Modell einige neue Felder und auch eine Einschränkung im Zusammenhang mit diesen neuen Feldern hinzuzufügen:

Code: Select all

class User(models.Model):
username = models.CharField(max_length=32)

# New fields ##################################
has_garden = models.BooleanField(default=False)
garden_description = models.CharField(
max_length=32,
null=True,
blank=True,
)

class Meta:
constraints = [
models.CheckConstraint(
check=Q(has_garden=models.Value(True))
& Q(garden_description__isnull=True),
name="garden_description_if_has_garden",
)
]

Das Problem ist, dass ich beim Ausführen meiner Migrationen die folgende Fehlermeldung erhalte:

Code: Select all

django.db.utils.IntegrityError: check constraint "garden_description_if_has_garden" is violated by some row
Aber ich verstehe nicht, wie gegen die Einschränkung verstoßen wird, wenn kein Benutzer einen has_garden hat, das Feld gerade erst erstellt wird und auch sein Standardwert ist Falsch 🤔.
Ich verwende Django 3.2 mit Postgresql.
Wie füge ich diese Einschränkung richtig hinzu? ? Wenn es von Nutzen ist Hier ist die automatisch generierte Migration:

Code: Select all

# Generated by Django 3.2.25 on 2025-01-15 23:52

import django.db.models.expressions
from django.db import migrations, models

class Migration(migrations.Migration):

dependencies = [
("some_app", "0066_user"),
]

operations = [
migrations.AddField(
model_name="user",
name="garden_description",
field=models.CharField(blank=True, max_length=32, null=True),
),
migrations.AddField(
model_name="user",
name="has_garden",
field=models.BooleanField(default=False),
),
migrations.AddConstraint(
model_name="user",
constraint=models.CheckConstraint(
check=models.Q(
("has_garden", django.db.models.expressions.Value(True)),
("garden_description__isnull", True),
),
name="garden_description_if_has_garden",
),
),
]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post