Автоматическое создание модели при создании другой модели с ForeignKey

Я пытаюсь создать процесс регистрации, в котором определенная модель (Member) автоматически создается, когда я создаю модель UserFields, но я не могу найти решение; вот что я пытался:

Models.py

class Member(models.Model):
    member_id = models.AutoField(primary_key=True)
    user_creation_date = models.DateField(auto_now_add=True)

class MemberType(models.Model):
    type_name = models.CharField(max_length=255, primary_key=True)
    member_type = models.ForeignKey(Member, on_delete=models.CASCADE)

class MemberFields(models.Model):
    member = models.ForeignKey(Member, on_delete=models.CASCADE)
    social_security_id = models.CharField(max_length=255)
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    birth_date = models.DateField()
    birthplace = CountryField()
    gender = models.CharField(choices=GENDER_CHOICES, max_length=255)
    admission_date = models.DateField()

Forms.py

class MemberFieldsForm(forms.ModelForm):
    class Meta:
        model = MemberFields
        fields = [
            "social_security_id",
            "first_name",
            "last_name",
            "birth_date",
            "birthplace",
            "gender",
            "admission_date",
        ]
        labels = {
            "social_security_id": "SSN",
            "first_name": "First name",
            "last_name": "Last name",
            "birth_date": "Date of birth",
            "birthplace": "Place of birth",
            "sex": "Sex",
            "address": "Address",
            "admission_date": "Admission date",
        }
        widgets = {
            "member_type": forms.TextInput(attrs={'class': 'form-control'}),
            "social_security_id": forms.TextInput(attrs={'class': 'form-control'}),
            "first_name": forms.TextInput(attrs={'class': 'form-control'}),
            "last_name": forms.TextInput(attrs={'class': 'form-control'}),
            "birth_date": forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}),
            "birthplace": forms.Select(attrs={'class': 'form-control'}),
            "address": forms.Select(attrs={'class': 'form-control'}),
            "sex": forms.Select(attrs={'class': 'form-control'}),
            "admission_date": forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}),
            "member_type": forms.Select(attrs={'class': 'form-control'}),
        }

Views.py

def index(request):
    if request.method == 'POST':
        form = MemberFieldsForm(request.POST)
        if form.is_valid():
            c = form.changed_data["Member"]
            member = Member.objects.filter(name=c).first()
            if not member:
                member = Member.objects.create(name=c)
            MemberFields = form.save(commit=False)
            MemberFields.Member = Member
            MemberFields.save()
            return HttpResponse("Member registered")
    else:
        form = MemberFieldsForm()
    return render(request, 'add-member.html', {'form': form})

Я не знаю, правильный ли это способ, я новичок в Django и Python и есть много вещей, которые все еще непонятны для меня.

<
Вернуться на верх