Django: добавление исключенных полей после отправки в ModelForm - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть ModelForm, где я исключил поле selected_season. Модель выглядит следующим образом (показывает соответствующую часть):

class Registration(models.Model):
    student_name = models.CharField(max_length=50)
    selected_season = models.ForeignKey(Season, on_delete=models.CASCADE)
    ...

перед сохранением формы я пытался добавить это поле в:

if form.is_valid():
   form.save(commit=False)
   form.selected_season = '21'
   form.save()

Но это показывает null value in column "selected_season_id" violates not-null constraint Я добавил 21, потому что в моей таблице Сезонов есть 2 объекта: «21» и «22». Как это исправить?

РЕДАКТИРОВАТЬ

Модель сезона выглядит так:

class Season(models.Model):
    season = models.CharField(max_length=2, primary_key=True)
    subject = models.ManyToManyField(Subject)
    running = models.BooleanField(default=False)

Первичный ключ не является id , но атрибут season. После того, как мне пришлось изменить ответ Правана:

if form.is_valid():
            form.save(commit=False)
            season=Season.objects.get(season=21)
            form.selected_season = season
            form.save()

, но проблема все еще остается.

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

получить объект и назначить, как показано ниже

if form.is_valid():
   form.save(commit=False)
   season=Season.objects.get(season="21")
   form.selected_season = season
   form.save()
0 голосов
/ 25 апреля 2020

Выдает ошибку, потому что вы не написали null=True, blank=True в своих моделях и не зарегистрировали пользователей с этой формой. Добавление их должно решить проблему. Попробуйте:

selected_season = models.ForeignKey(Season, on_delete=models.CASCADE, null=True, blank=True)
...