исключение поля id из встроенного набора форм при сохранении

#python #django #inline-formset

#python #django #встроенный набор форм

Вопрос:

У меня есть две модели, соединенные внешним ключом. Одним из них является встроенный набор форм. По какой-то причине идентификаторы набора форм идентифицируются как первичные ключи в базе данных, и каждый раз, когда форма отправляется, таблица, принадлежащая набору форм, в основном перезаписывается. Как мне игнорировать идентификаторы набора форм при сохранении

models.py

 class Student(models.Model):
    first_name = models.CharField(max_length=40)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()

class Courses(models.Model):
    student = models.ForeignKey(Student)
    course_name = models.CharField(max_length=40)
    start_time = models.TimeField()
  

forms.py

 class CoursesForm(forms.ModelForm):

    class Meta:
        model = Courses
        exclude = ("student",)


class StudentForm(forms.ModelForm):

    class Meta:
        model = Student
       fields = "__all__"
  

views.py

 def post(self, request, *args, **kwargs):
    sform = StudentForm(request.POST, instance=Student())

    CourseSchedule = inlineformset_factory(Student, Courses, form=CoursesForm, can_delete=False, extra=0, min_num=1)

    cforms = CourseSchedule(data=request.POST)

    if sform.is_valid() and cforms.is_valid():

        sform_obj = sform.save()
        for cform in cforms.forms:
            cform_obj = cform.save(commit=False)
            cform_obj.student = sform_obj
            cform_obj.save()

    ....
  

Комментарии:

1. где связь в ваших моделях

2. сначала создайте m:m relationship между двумя таблицами в Courses модели students = models.ManyToManyField(Student)

3. затем используйте inline formset надлежащим образом встроенный

4. Это отношение «один ко многим»,

Ответ №1:

Я понял это.. Данные моего набора форм сохранялись после отправки. Мне пришлось объявить пустой набор запросов в basemodelformset.