Нулевое значение нарушает ограничение not-null, но модель имеет пустое значение = True null = True - PullRequest
0 голосов
/ 26 октября 2019

У меня есть форма

class EmployeeHistoryForm(forms.ModelForm):
    department = forms.ModelChoiceField(
        label="Подразделение",
        queryset=Department.objects.all()
        )
    post = forms.ModelChoiceField(
        label="Должность",
        queryset=Post.objects.all()
        )
    rank = forms.IntegerField(
        label="Разряд",
        validators=[
            MaxValueValidator(MAX_RANK),
            MinValueValidator(1)
        ])
    start_date = forms.DateField(
        label="Дата начала работы",
        initial=datetime.now().date()
        )

    class Meta:
        model = EmployeeHistory
        exclude = ['employee', 'end_date']

для модели

class EmployeeHistory(models.Model):
    employee = models.ForeignKey(Employee, on_delete=models.CASCADE)
    department = models.ForeignKey(Department, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    rank = models.IntegerField(
        validators=[
            MaxValueValidator(MAX_RANK),
            MinValueValidator(1)
        ]
    )
    start_date = models.DateField()
    end_date = models.DateField(blank=True, null=True)

employee поле заполнено из другой формы, и я хочу, чтобы end_date некоторое время не печаталось.

Это представление:

def add_employee_action(request):
    if request.method == "POST":
        ...
        history_form = EmployeeHistoryForm(request.POST)
        if personal_form.is_valid() and history_form.is_valid():
            ...
            employee.save()

            history=EmployeeHistory(
                    employee=employee,
                    department=Department.objects.filter(
                        pk=request.POST['department']
                    )[0],
                    post=Post.objects.filter(
                        pk=request.POST['post']
                    )[0],
                    rank=request.POST['rank'],
                    start_date=datetime.now().date(),
                    end_date=None
                )
            history.save()
    else:
        ...
        history_form = EmployeeHistoryForm()
    return render(
        request,
        'add_employee.html',
        context={
            ...
            'history_form': history_form,
            }
    )

Но когда я отправляю форму, есть django.db.utils.IntegrityError: null value in column "end_date" violates not-null constraint DETAIL: Failing row contains (7, 12, 2019-10-26, null, 1, 10, 1). Я использую PostgreSQL.

Примечание: Я добавил blank=True, null=True после первой миграции, затем мигрируйте снова. Может быть, это будет важно.

1 Ответ

1 голос
/ 26 октября 2019

Согласно этому вопросу я должен оставить только null=True. Это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...