大师班中具有唯一属性的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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...