Автоматическое создание модели при создании другой модели с 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 и есть много вещей, которые все еще непонятны для меня.
<