如何解决大师班中具有唯一属性的Python继承
我遇到了一个小问题。
class Person(models.Model):
cpf = BRCPFField(**unique=true**)
class Student(Person):
new_field = ....
class Teacher(Student):
another_field = ...
class BoardMember(Person):
class Meta:
proxy = True
CPF = 美国 SSN。
一个人可以是学生,也可以是董事会成员,而学生将来可以是老师。
当我用cpf注册一个人时,就可以了。但是当我尝试将同一个人注册为学生时,由于字段唯一,python 向我显示错误。我该如何解决这个问题?
表格:
class PersonForm(forms.ModelForm):
class Meta:
model = Person
fields = '__all__'
class BoardMemberForm(PersonForm):
class Meta:
model = BoardMember
fields = '__all__'
class StudentForm(PersonForm):
class Meta:
model = Student
fields = '__all__'
观看次数:
class StudentCreate(LoginrequiredMixin,CreateView):
model = Student
form_class = StudentForm
login_url = reverse_lazy('users:login')
class BoardMember Create(LoginrequiredMixin,CreateView):
model = BoardMember
login_url = reverse_lazy('users:login')
form_class = BoardMemberForm
模板Student_form:
<form class="row gx-3 gy-2 align-items-center needs-validation" method="post" action=""
role="form" enctype="multipart/form-data">
{% csrf_token %}
{{ form.media }}
<div class="row g-3">
<div class="col-md-3">
<div class="form-floating">
{{ form.cpf }}
<label for="id_cpf">CPF</label>
</div>
</div>
<div class="col-md-6">
<div class="form-floating">
{{ form.nome }}
<label for="id_nome">Nome</label>
</div>
</div>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary mb-2">Enviar</button>
</div>
</form>
模板 BoardMember_form:
<form class="row gx-3 gy-2 align-items-center needs-validation" method="post" action=""
role="form" enctype="multipart/form-data">
{% csrf_token %}
{{ form.media }}
<div class="row g-3">
<div class="col-md-3">
<div class="form-floating">
{{ form.cpf }}
<label for="id_cpf">CPF</label>
</div>
</div>
<div class="col-md-6">
<div class="form-floating">
{{ form.nome }}
<label for="id_nome">Nome</label>
</div>
</div>
<div class="col-md-6">
<div class="form-floating">
{{ form.function }}
<label for="id_nome">Function</label>
</div>
</div>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary mb-2">Enviar</button>
</div>
</form>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。